Thank you all for your help. Vijay. On Tue, Feb 7, 2012 at 9:10 PM, Bernd Petrovitsch <bernd@xxxxxxxxxxxxxxxxxxx> wrote: > On Die, 2012-02-07 at 00:38 +0530, Vijay Chauhan wrote: >> Hi List, >> >> I am learning Linux and trying to understand exec and fork function. >> execl says that it overlays the running address space. What does it mean? >> >> I created the following program and used top command with >> intentionally wrong arguments: >> >> #include<stdio.h> >> #include<unistd.h> >> #include<sys/types.h> >> #include<stdlib.h> >> >> int main(){ >> int a = -1; >> if(fork()==0){ >> printf("Inside child\n"); >> printf("child pid=%d, parentid=%d\n", getpid(), getppid()); >> execl("/usr/bin/top", "/usr/bin/top", ">/dev/null" ,(char*)0 ); > > You get here only if the execl() as such fails. > >> scanf("inside child provide a %d", &a); > > You should check the return value here if you actually got a matching > parameter. > scanf() is actually a function to be avoided. > >> printf("Inside child a=%d\n", a); >> exit(1); >> } else { >> printf("Inside parent, going to wait\n"); >> printf("my pid=%d, parentid=%d\n", getpid(), getppid()); >> scanf("input parent %d\n", &a); > > You should check the return value here if you actually got a matching > parameter. > scanf() is actually a function to be avoided. > >> wait(NULL); > > You should check the return value here to know why "wait()" returns. > >> printf("Wait over\n"); >> printf("Inside parent a=%d\n", a); >> } >> return 0; >> } > > Bernd > -- > Bernd Petrovitsch Email : bernd@xxxxxxxxxxxxxxxxxxx > LUGA : http://www.luga.at > _______________________________________________ Kernelnewbies mailing list Kernelnewbies@xxxxxxxxxxxxxxxxx http://lists.kernelnewbies.org/mailman/listinfo/kernelnewbies