0
L'appel système fork alloue-t-il une nouvelle structure utilisateur pour le processus fils? Il alloue une nouvelle structure de processus pour le processus fils.fork dans freeBSD unix
L'appel système fork alloue-t-il une nouvelle structure utilisateur pour le processus fils? Il alloue une nouvelle structure de processus pour le processus fils.fork dans freeBSD unix
http://svn.freebsd.org/base/release/7.1.0/sys/kern/kern_fork.c
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).
mais pourquoi un lseek dans parent effet processus enfant process.Does'nt l'information comme pointeur dans le fichier ouvert par chaque processus est maintenu dans la structure de l'utilisateur qui est différent pour les deux? merci – mawia
Non. La page de manuel indique exactement que l'enfant reçoit seulement une nouvelle copie des descripteurs (petites valeurs entières). Ces descripteurs sont généralement des index de tableau dans une table de noyau avec des informations de fichier ("mêmes objets sous-jacents"). Si un enfant veut un pointeur de fichier indépendant, il doit créer lui-même un tel objet en réouvrant le fichier. – Jens