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 ); scanf("inside child provide a %d", &a); 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); wait(NULL); printf("Wait over\n"); printf("Inside parent a=%d\n", a); } return 0; } When i run this program, it gives following output: [vijay@localhost]$ ./a.out Inside parent, going to wait Inside child child pid=2775, parentid=2774 my pid=2774, parentid=2681 top: unknown argument '>' usage: top -hv | -bcisSHM -d delay -n iterations [-u user | -U user] -p pid [,pid ...] 10 Wait over Inside parent a=-1 [vijay@localhost]$ Why the child scanf and printf not executed? In the parent program, i expected input parent should be printed. But it doesnt and just wait for some input. When i entered 10 it resumes but printing -1 as a value. Could anyone please help me to understand this behavior? or any good tutorial or book Thanks. Vijay _______________________________________________ Kernelnewbies mailing list Kernelnewbies@xxxxxxxxxxxxxxxxx http://lists.kernelnewbies.org/mailman/listinfo/kernelnewbies