0% ont trouvé ce document utile (0 vote)
6 vues1 page

Démonstration de fork() et wait() en C

Le programme illustre l'utilisation de fork() et wait() en C. Un processus fils calcule la somme des entiers de 1 à 10 et l'affiche, tandis que le processus père attend la fin du fils avant d'afficher un message de clôture. Le code gère également les erreurs de fork.

Transféré par

arthurtsapi
Copyright
© All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats TXT, PDF, TXT ou lisez en ligne sur Scribd
0% ont trouvé ce document utile (0 vote)
6 vues1 page

Démonstration de fork() et wait() en C

Le programme illustre l'utilisation de fork() et wait() en C. Un processus fils calcule la somme des entiers de 1 à 10 et l'affiche, tandis que le processus père attend la fin du fils avant d'afficher un message de clôture. Le code gère également les erreurs de fork.

Transféré par

arthurtsapi
Copyright
© All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats TXT, PDF, TXT ou lisez en ligne sur Scribd

/* somme_fils.

c
* Démonstration fork() + wait() :
* – le fils calcule Σ(1..10)
* – le père attend, puis affiche un message de clôture
*/
#include <stdio.h> // printf
#include <unistd.h> // fork, getpid
#include <sys/wait.h> // wait / waitpid
#include <stdlib.h> // exit

int main(void)
{
pid_t pid = fork();

if (pid < 0) { // Erreur de fork


perror("fork");
return 1;
}

if (pid == 0) { // ----- Processus enfant -----


int somme = 0;
for (int i = 1; i <= 10; ++i)
somme += i;

printf("[Fils] Somme de 1 à 10 = %d (PID = %d)\n",


somme, getpid());
exit(0); // Terminaison propre
}
else { // ----- Processus parent -----
wait(NULL); // Attend n’importe quel fils
printf("[Parent] Fin du parent (PID = %d)\n", getpid());
}

return 0;
}

Vous aimerez peut-être aussi