Section courante

A propos

Section administrative du site

FORK

Fourche
  unistd.h

Syntaxe

pid_t fork(void);

Retour

Valeur Description
0 Cette valeur permet d'indiquer à l'enfant que l'opération à réussis.
-1 Cette valeur permet d'indiquer qu'une erreur s'est produite. Dans ce cas, il sera possible d'obtenir des informations supplémentaires en consultant la variable errno.
supérieur à 0 Ces valeurs permettent d'indiquer l'identificateur de processus du parent.

Description

Cette fonction permet de créer un processus fils ou enfant.

Remarques

Exemple

Voici exemple montrant comment se comporte cette fonction avec les variables locales et globales :

  1. #include <errno.h>
  2. #include <stdio.h>
  3. #include <stdlib.h>
  4. #include <unistd.h>
  5. #include <sys/types.h>
  6. #include <sys/wait.h>
  7.  
  8. int var_global;
  9.  
  10. int main(void) {
  11.  int var_local = 0;
  12.  switch(fork()) {
  13.   case -1: // Echec
  14.    printf("Echec de l'appel de la fonction fork() !");
  15.    return 1;
  16.   case 0:  // Processus enfant
  17.    var_local++;
  18.    var_global++;
  19.    puts("PROCESSUS ENFANT:");
  20.    printf("Variable local = %i et global = %i\n\n", var_local, var_global);
  21.    break;
  22.   default: // Processus parent
  23.    var_local = 5000;
  24.    var_global = 10000;
  25.    puts("PROCESSUS PARENT: ");
  26.    printf("Variable local = %i et global = %i\n\n", var_local, var_global);
  27.    break;
  28.  }
  29.  return 0;
  30. }

on obtiendra le résultat suivant :

PROCESSUS PARENT:
Variable local = 5000 et global = 10000

PROCESSUS ENFANT:
Variable local = 1 et global = 1

Voir également

Articles - Fork bomb
Langage de programmation - C pour Linux - Référence de procédures et fonctions - vfork
Langage de programmation - Perl - Référence de procédures et fonctions - fork

Dernière mise à jour : Samedi, le 27 juin 2015