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