Créer un nouveau processus

Problème

Vous souhaitez que votre programme effectue plusieurs tâches en parallèle en créant des processus dédiés.

Solution

Utilisez fork() pour dupliquer le processus et faites exécuter la tâche dédiée au processus fils.

Discussion

L’appel système fork() duplique le processus en cours d’exécution et les deux processus résultant de cet appel sont le processus père ayant appelé fork() qui connaît l’identifiant de processus (PID) de son fils par la valeur retour de fork(), et le processus fils pour qui fork() a renvoyé la valeur nulle. Après l’appel à fork(), le processus fils dispose des mêmes variables que son père, et leur contenu est le même. Mais les processus étant distincts, un changement dans l’un des processus n’est pas répercuté dans l’autre processus.

Le code générique pour dupliquer un processus est le suivant :


int pid; 
switch ((pid = fork())) 
  { 
  case -1: 
    fprintf (stderr, "fork() a échoué\n"); 
    exit (EXIT_FAILURE); 
  case 0: 
    fonction_executee_par_le_fils (arguments); 
    break; 
  default: 
    fonction_executee_par_le_pere (arguments); 
  } 
 
fonctions_executees_par_le_pere_et_le_fils ();
 

Le processus fils et le processus père exécutent tous les deux le code en dehors du bloc switch(), ce qui n’est...

Pour consulter la suite, découvrez le livre suivant :
couv_EI3CACT.png
60-signet.svg
En version papier
20-ecran_lettre.svg
En version numérique
41-logo_abonnement.svg
En illimité avec l'abonnement ENI
130-boutique.svg
Sur la boutique officielle ENI
Précédent
Introduction
Suivant
Éviter les processus zombies