views:

201

answers:

2

Does the fork system call allocate a new user structure for the child process?It does allocate new process structure for the child process.

+1  A: 

http://svn.freebsd.org/base/release/7.1.0/sys/kern/kern_fork.c

http://www.freebsd.org/cgi/man.cgi?query=fork&apropos=0&sektion=0&manpath=FreeBSD+7.1-RELEASE&format=html

DESCRIPTION
     The fork() system call causes creation of a new process.  The new process
     (child process) is an exact copy of the calling process (parent process)
     except for the following:

       +o   The child process has a unique process ID.

       +o   The child process has a different parent process ID (i.e., the
           process ID of the parent process).

       +o   The child process has its own copy of the parent's descriptors.
           These descriptors reference the same underlying objects, so
           that, for instance, file pointers in file objects are shared
           between the child and the parent, so that an lseek(2) on a
           descriptor in the child process can affect a subsequent read(2)
           or write(2) by the parent.  This descriptor copying is also
           used by the shell to establish standard input and output for
           newly created processes as well as to set up pipes.

       +o   The child process' resource utilizations are set to 0; see
           setrlimit(2).

       +o   All interval timers are cleared; see setitimer(2).
Joe Koberg
but why an lseek in child process effect parent process.Does'nt the information like current pointer in the file opened by each process is maintained in the user structure which is different for both?thanks
mawia
A: 

i have got it new user structure is allocated for the child by fork. thanks

mawia
This is not an "answer". Edit the question or use comments when you have something to add, and PLEASE try to write with proper English.
ephemient