[LCP]A small doubt on fork

Bradley, Peter PBradley at uwic.ac.uk
Fri Oct 19 19:24:26 UTC 2001


Sorry, the emphasis wasn't shown (I should have known that - hence the
apology).

The bit I wanted to emphasise was, "and its entire address space, possibly
including the state of mutexes and other resources."

Sorry about that.

Peter


 -----Original Message-----
From: 	Bradley, Peter [mailto:PBradley at uwic.ac.uk] 
Sent:	19 October 2001 10:12
To:	'linuxcprogramming at lists.linux.org.au'
Subject:	RE: [LCP]A small doubt on fork

Hi,

I think what the enquirer needs to know is that a process's address space is
copied over the fork.

man fork says:

      The fork() system call causes the creation of a new process. The new

      child process is created wth exactly one thread or lightweight

      process. The new child process contains a replica of the calling

      thread (if the calling process is multi-threaded) and its entire

      address space, possibly including the state of mutexes and other

      resources. 

(my emphasis)

HTH

Peter                                                           

 -----Original Message-----
From: 	Asif Raj [mailto:asif at gdit.iiit.net] 
Sent:	19 October 2001 09:53
To:	linuxcprogramming at lists.linux.org.au
Subject:	Re: [LCP]A small doubt on fork

It is because when the execution of the program begins, variable i is
initialised and assigned a particular address in the memory. when you
change the value of i, the value contained at that memory location changes
but the program still refers to variable i through that memory location
only.

cheers
asif

On Fri, 19 Oct 2001, sasidhar p wrote:

> Hi,
>    The result of the following program is surprising me...
> 
> main()
> {
>     int pid;
>     int i = 5;
> 
>     switch (pid = fork()) {
>          case 0 : {
>                         i = 7;
>                         printf("In child address of i = %p \n",&i);
>                       } break;
>          case -1 : printf("Fork error \n"); break;
>          default : printf("In parent address of i = %p\n",&i);
>     }
> }
> 
> Out put on my m/c:
> 
> In parent address of i = effffa68
> In child address of i = effffa68
> 
> Problem : I was expecting that the addresses shold be different because
fork 
> creates a new process.  But the o/p is both addresses are same.
> 
> Question: Why is this so?
> 
> Thanx,
> Sasi.
> 
> 
> _________________________________________________________________
> Get your FREE download of MSN Explorer at http://explorer.msn.com/intl.asp
> 
> _______________________________________________
> This is the Linux C Programming List
> :  http://lists.linux.org.au/listinfo/linuxcprogramming List
> 

_______________________________________________
This is the Linux C Programming List
:  http://lists.linux.org.au/listinfo/linuxcprogramming List
_______________________________________________
This is the Linux C Programming List
:  http://lists.linux.org.au/listinfo/linuxcprogramming List



More information about the linuxCprogramming mailing list