Linux | 
				CentOS 4.8 | 
				|
![]()  | 
				fork(2) | 
				![]()  | 
			
| 
 fork − Créer un processus fils (child).  | 
| 
 #include <sys/types.h> pid_t fork(void);  | 
| 
 fork crée un processus fils qui diffère du processus parent uniquement par ses valeurs PID et PPID et par le fait que toutes les statistiques d’utilisation des ressources sont remises à zéro. Les verrouillages de fichiers, et les signaux en attente ne sont pas hérités. Sous Linux, fork est implementé en utilisant une méthode de copie à l’écriture. Ceci consiste à ne faire la véritable duplication d’une page mémoire que lorsqu’un processus en modifie une instance. Tant qu’aucun des deux processus n’écrit dans une page donnée, celle-ci n’est pas vraiment dupliquée. Ainsi les seules pénalisations induites par fork sont le temps et la mémoire nécessaires à la copie de la table des pages du parent ainsi que la création d’une structure de tâche pour le fils.  | 
| 
 En cas de succès, le PID du fils est renvoyé au processus parent, et 0 est renvoyé au processus fils. En cas d’échec −1 est renvoyé dans le contexte du parent, aucun processus fils n’est créé, et errno contient le code d’erreur.  | 
| 
 ENOMEM  | 
 Impossible d’allouer assez de mémoire pour copier la table des pages du père et d’allouer une structure de tâche pour le fils.  | 
|
| 
 EAGAIN  | 
 Impossible de trouver un emplacement vide dans la table des processus.  | 
    pid_t   pid;
   pid = fork ();
   if (pid > 0) {
         /* Processus père      */
    } else if (pid == 0) {
         /* Processus fils      */
    } else {
         /* Traitement d’erreur */
    }
 | 
| 
 SVr4, SVID, POSIX, X/OPEN, BSD 4.3  | 
| 
 clone(2), execve(2), vfork(2), wait(2).  | 
| 
 Christophe Blaess, 1997.  | 
![]()  | 
				fork(2) | ![]()  |