Menu
Rechercher
Accueil > Le LPNHE > Pages du personnel permanent > Beau Tristan > Divers > Vielleries > fork, ou comment créer des processus fils en C
La fonction fork
permet de créer un nouveau processus.
Autrement dit, l’appel à fork
crée un processus copie conforme du processus appelant.
Utilisation illustrative
Ainsi, vous pouvez essayer :
L’exécution donnera :
Le premier printf
est exécuté une fois, il se situait avant le fork
.
En revanche, après l’appel à fork
, le printf
est appelé deux fois.
Il faut ensuite savoir que la valeur de retour de fork
est :
- soit 0, auquel cas nous sommes dans le processus fils
- soit un nombre supérieur à 0, auquel cas nous sommes dans le processus parent, et le nombre correspond au PID du processus fils
- soit -1 si il a été impossible de créer un nouveau processus (voir
man 2 fork
pour plus de détail.
Interaction minimale entre processus parent et fils
Pour effectuer des synchronisation entre processus parent et fils, on peut faire en sorte que le processus parent attende la fin du processus fils. On réalise cela ainsi :
Essayez cela, l’exécution est très explicite :
- on crée un processus fils (avec
fork
bien entendu) - le processus parent attend que le processus fils finisse (avec
waitpid
, sachant que lePID
du processus fils a été donné par la valeur de retour defork
) - pour simuler un processus non trivial, on fait attendre 2 secondes le processus fils, qui meurt ensuite (et le précise en sortie standard)
- le processus fils étant fini, le processus parent reprend et se termine.
Voilà !
Échange de données entre processus parent et fils
Avec l’utilisation de tuyaux (ou pipe en anglais), il est très simple de faire communiquer le processus parent et le processus fils. Ainsi, pour échanger des caractères (ici seulement 1 caractère), on pourra faire :
Dans la même rubrique :
- tutoriel rapide matlab 5
- thèse sur Borexino
- anti-spam et imap
- permutations et appel récursif
- format non trivial pour les nombres en c++
- Sommer des champs dans un fichier
- vim et ses folles astuces
- aide minimale emacs
- pointeur de fonction
- makefile et recherche de dépendances
- rediriger la sortie standard de Minuit
- makefile pour ferme hétérogène de calcul (tel qu’au ccin2p3)
- les énumérations en C
- publications et communications
- code ascii d’un caractère
- rapports et communications internes
- calcul d’histogramme
- test d’argument numérique entier
- calculs sur nombres flottants en shell
- créer un pdf récapitulant les logins d’une machine
- indications sur le sujet d’examen d’UNIX-1...
- lister en C le contenu d’un répertoire
- contrôle des processus fils créés par fork()
- variables globales (extern) et commandes du préprocesseur
- Programme d’orchestre au tuba...
- Léopard : installation de l’OS et packages divers
- Mountain Lion : une configuration personnelle
- Soucis avec Yosemite ( MacOS 10.10 )
- CV - très vieille version