Fork crée un nouveau processus. Le processus nouvellement créé est un processus enfant. Il s'agit d'une copie du code ultérieur du processus parent. Il est généralement utilisé comme serveur multi-processus. Il peut également exécuter du code indépendant dans le processus enfant.
Utilisez getpid pour déterminer si le processus actuel est un processus enfant ou un processus parent.
Prenons l'exemple suivant :
Voici le contenu cité :
#include <sys/types.h> #include <unistd.h> #include <stdio.h> int principal() { pid_tpid; entier statique n = 0 ; printf("fourchette!n"); commutateur (pid = fork()) { cas-1 : { /* ..pid.-1.fork.... */ /* ....... */ /*..........*/ perror("Le fork a échoué !"); casser; } cas 0 : { /* pid.0.... */ printf("[enfant]je suis un enfant !n"); printf("[enfant]getpid=[%d]n", getpid() ); printf("[enfant]pid=[%d]n", pid ); casser; } défaut: { /* pid..0.... */ printf("[parent]je suis parent !n" ); printf("[parent]getpid=[%d]n",getpid() ); printf("[parent]pid=[%d]n",pid ); casser; } } printf("n=[%d]n", n++); renvoie 0 ; } |
Cet exemple est compilé avec gcc sous Linux, et les résultats d'exécution sont les suivants :
Voici le contenu cité :
fourchette! [enfant] je suis un enfant ! [enfant]getpid=[7422] [enfant]pid=[0] n=[0] [parent] je suis parent ! [parent]getpid=[7421] [parent]pid=[7422] n=[0] |