Linux |
CentOS 5.3 |
|
fork(2) |
fork − Créer un processus fils. |
#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. |
EAGAIN |
fork() ne peut pas allouer assez de mémoire pour copier la table des pages du père et une structure de tâche pour le fils. |
|
EAGAIN |
Il n’a pas été possible de créer un nouveau processus car la limite ressource RLIMIT_NPROC de l’appelant a été rencontrée. Pour franchir cette limite, le processus doit avoir au moins l’une des deux capacités CAP_SYS_ADMIN ou CAP_SYS_RESOURCE. |
|
ENOMEM |
fork() a échoué car le noyau n’a plus assez de mémoire. |
Voir pipe(2) et wait(2). |
SVr4, BSD 4.3, POSIX.1-2001. |
clone(2), execve(2), vfork(2), setrlimit(2), unshare(2), wait(2), capabilities(7) |
Ce document est une traduction réalisée par Christophe Blaess <http://www.blaess.fr/christophe/> le 9 octobre 1996 et révisée le 14 août 2006. L’équipe de traduction a fait le maximum pour réaliser une adaptation française de qualité. La version anglaise la plus à jour de ce document est toujours consultable via la commande : « LANG=C man 2 fork ». N’hésitez pas à signaler à l’auteur ou au traducteur, selon le cas, toute erreur dans cette page de manuel. |
fork(2) |