work-site/content/courses/os-ueve/ton-paire.cpp

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;
}