fork() and exec()
Bernd Petrovitsch
bernd at petrovitsch.priv.at
Tue Feb 7 10:40:13 EST 2012
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 at petrovitsch.priv.at
LUGA : http://www.luga.at
More information about the Kernelnewbies
mailing list