Précédent Remonter Suivant

4  Terminaison du processus courant

Le processus courant se termine automatiquement lorsqu'il cesse d'exécuter la fonction main(). Les primitives suivantes lui permettent d'arrêter explicitement son exécution :
    #include <unistd.h>

    void _exit (int status) ;
    void exit (int status) ;
Ces deux primitives provoquent la terminaison du processus courant. Le paramètre status spécifie un code de retour, compris entre 0 et 255, à communiquer au processus père.

Par convention, en cas de terminaison normale, un processus doit retourner la valeur 0.

Avant de terminer l'exécution du processus, exit() exécute les fonctions de « nettoyage » des librairies standard.
Exercice 1   Expliquer le comportement du programme donné à la figure 3.


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

int main (void)
{
  int i ;
  for (i=0 ; i < 4 ; i++) {
    int retour ;
    retour = fork () ;
    switch (retour) {
      case -1 : /* erreur */
        perror ("erreur fork\n") ;
        exit (1) ;
      case 0 : /* fils */
        printf ("fils : %d\n", i) ;
      default : /* pere */
        printf ("pere : \n") ;
    }
  }
}                                                         

Figure 3 : Que fait ce programme ?



Exercice 2   Donner un programme qui affiche les entiers de 0 à 3 par 4 processus différents. Ce programme doit se terminer après l'affichage des 4 entiers.


Précédent Remonter Suivant