Création de processus avec fork();

La fonction fork
permet la duplication de processus. A l'issu de son appel il existera donc deux processus : le père et le fils. Il ne seront différencié que par le retour de la fonction fork
et leur valeur de PID
(processor Identifiant)
fork()
renvoie
- -1 en cas d'erreur
- 0 pour le fils
- >0 pour le fils : le nombre renvoyé est le pid du fils (qui ne peut pas être 0 puisque 0 est le pid du noyau)
#include <stdio.h> #include <stdlib.h> #include <unistd.h> //fork #include <sys/wait.h> //wait int main(){ int partage = 42; int pid; switch(pid = fork()){ case -1: case 0: break; default: wait(NULL); // permet d'attendre la mort du fils } return 0; }
Le code dans les "case 0" et default sont exécuté en parallèle. Les lignes peuvent donc être entrelacées.
Un processus fils dont le père est mort renverra 1 (le pid d'init) comme ppid. Pour éviter cela nous utilison la fonction wait (ligne 25) qui fera est bloquant jusqu'au changement de status d'un fils du processus. En l'occurence nous attendons la mort du processus fils, pour que ce dernier ait le temps de demander le pid de son père.