Outils personnels
Vous êtes ici : Accueil C & C++ Programmation système Processus Solution 2

Solution 2

Par Benjamin Poulain - Dernière modification 18/04/2008 22:40

Énoncé

Écrire un programme qui permet d'observer l'adoption d'un processus orphelin par le processus de PID 1 (init). Le programme créera un fils et s'endormira 5 secondes puis se terminera. Le processus fils exécutera une boucle de 10 itérations dans laquelle il affichera le PID de son père et s'endormira une seconde.

Solution

La solution pour Linux ou BSD:

#include <sys/types.h>
#include <unistd.h>
#include <stdio.h>
#include <stdlib.h>

int main()
{
int i;

switch ( fork() ){
case -1:
perror("Erreur lors de fork");
exit(EXIT_FAILURE);
case 0:
for ( i = 0; i < 10; ++i ){
printf("Le pid de mon père est %d\n", getppid());
sleep(1);
}
break;
default:
sleep(5);
}
return EXIT_SUCCESS;
}

Lors de la terminaison du père, le processus init devient le père et récupèrrera les ressource à la du fils. L'exécution du code donne ceci:

$ ./a.out 
Le pid de mon père est 6527
Le pid de mon père est 6527
Le pid de mon père est 6527
Le pid de mon père est 6527
Le pid de mon père est 6527
Le pid de mon père est 1
Le pid de mon père est 1
Le pid de mon père est 1
Le pid de mon père est 1
Le pid de mon père est 1

Actions sur le document