Bref – fork()

Le nom le dit : ceci n'est qu'un bref, pas une description exhaustive du sujet.

L'appel système fork() du monde POSIX permet un parallélisme par multiples processus. Lorsque le processus appelle fork() :

Par exemple :

#include <iostream>
#include <unistd.h>
int main()
{
   using namespace std;
   if (fork())
      cout << "Je suis le parent" << endl;
   else
      cout << "Je suis l'enfant" << endl;
}

Il est possible pour le processus parent de passer des informations au processus enfant lors de sa création, du fait que les états globaux (mémoire statique) du processus parents sont copiés dans le processus enfant. Cependant, une fois le fork() réalisé, le parent et l'enfant mènent tous deux des existences indépendantes l'une de l'autre, et communiquent à travers les mécanismes de communication que met à leur disposition le système d'exploitation sous-jacent.

Le terme fork apparaît aussi dans le schéma de conception parallèle bien connu qu'est le modèle fork/join.

Il vaut mieux éviter de faire des fork bombs, parce que ce n'est pas gentil (devinez pourquoi) :

#include <unistd.h>
int main()
{
   for (;;)
      fork();
} // bye bye système

Il existe des variantes :

Lectures complémentaires

Quelques liens pour enrichir le propos.


Valid XHTML 1.0 Transitional

CSS Valide !