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 : [email protected]
                     LUGA : http://www.luga.at


_______________________________________________
Kernelnewbies mailing list
[email protected]
http://lists.kernelnewbies.org/mailman/listinfo/kernelnewbies

Reply via email to