40 lines
1.1 KiB
C++
40 lines
1.1 KiB
C++
|
/*
|
||
|
* Un exemple d'utilisation de fork, sleep et waitpid.
|
||
|
*
|
||
|
* Cours « Systèmes d'exploitation ».
|
||
|
*
|
||
|
* Sergiu Ivanov <sergiu.ivanov@univ-evry.fr>
|
||
|
*/
|
||
|
|
||
|
#include <stdio.h> // pour avoir printf
|
||
|
#include <unistd.h> // pour avoir fork
|
||
|
#include <sys/wait.h> // pour avoir waitpid
|
||
|
|
||
|
int main() {
|
||
|
// fork crée une copie du processus actuel. Après cette ligne il y
|
||
|
// aura deux processus qui exécuteront le code ci-dessous.
|
||
|
//
|
||
|
// Dans le processus qui a initié la création (le père), fork
|
||
|
// renverra le numéro unique (le PID) du processus créé (le
|
||
|
// fils). Dans le fils, fork renverra 0.
|
||
|
int pidFils = fork();
|
||
|
|
||
|
if(pidFils == 0) {
|
||
|
// fork a renvoyé 0, donc ce code est exécuté dans le fils.
|
||
|
printf("Coucou, papa");
|
||
|
|
||
|
// Attendre 1 seconde pour faire semblant de travailler dur.
|
||
|
sleep(1);
|
||
|
} else {
|
||
|
// On utilisera la fonction waitpid pour attendre. On doit lui
|
||
|
// passer le PID du fils, ainsi que deux autres paramètres de
|
||
|
// service.
|
||
|
int status; // le code de retour du fils;
|
||
|
waitpid(pidFils, &status, 0); // attente fin du fils
|
||
|
|
||
|
printf("Je suis ton paiiiire !");
|
||
|
}
|
||
|
|
||
|
return 0;
|
||
|
}
|