fork() and exec()

Srikrishan Malik(gmail) srikrishanmalik at gmail.com
Tue Feb 7 00:48:00 EST 2012


These are the first two results when I search "fork vs exec" in google.


http://www.yolinux.com/TUTORIALS/ForkExecProcesses.html
http://en.wikipedia.org/wiki/Fork-exec

I found very good explanations in both the links(yolinux is a bit better)

-Sri

On Tue, Feb 7, 2012 at 12:38 AM, Vijay Chauhan <kernel.vijay at gmail.com>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 );
>                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 at 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 at 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 at kernelnewbies.org
> http://lists.kernelnewbies.org/mailman/listinfo/kernelnewbies
>



-- 
SK Malik
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://lists.kernelnewbies.org/pipermail/kernelnewbies/attachments/20120207/9df33b28/attachment-0001.html 


More information about the Kernelnewbies mailing list