les fonctions en c
Nom
fork - créer un processus fils
Syntaxe
#include // contient le prototype de fork() pid_t fork (void);
Description
La fonction fork() crée un processus (appelé processus fils) qui est une "copie" pratiquement exacte du processus qui a appelé la fonction fork() (appelé processus père). Il y a aussi création d'un nouveau bloc de contrôle de processus (PCB : Process Control Block) Après l'exécution de la fonction fork(), le père et le fils partagent le même code (réentrance), et le fils reçoit une copie des segments de données utilisateur et des segments des données système (qui sont dupliqués, ce point sera précisé lors du cours système "gestion mémoire"). On dit que le processus fils hérite de la presque totalité du contexte de son père. Il hérite du père : l'environnement du processus (pointeurs vers l'espace mémoire, registres du processeur, en particulier le compteur ordinal), la priorité (nice value), les propriétaires, les bits SET_UID et SET_GUID, les masques de création des fichiers ouverts (en lecture, écriture ou les deux), les traitements des signaux, les répertoires courant et racine, les segments de mémoire partagée attachés. Les fichiers ouverts par le père sont partagés par le fils. Celui-ci reçoit une copie de la table des descripteurs des fichiers : s'il ferme le fichier, celui-ci est encore accessible par le processus père. En revanche, ils partagent le même pointeur de fichier.
Quelques éléments ne sont pas hérités par le processus fils : son pid et celui de son père (!), le temps d'exécution en mode user, (remis à zéro pour le fils), le temps d'exécution en mode kernel, (remis à zéro pour le fils), les intervalles des timers (ceux du processus fils sont remis à zéro : timers désarmés)