Maison  >  Article  >  Opération et maintenance  >  Quelle est la fonction fork sous Linux

Quelle est la fonction fork sous Linux

尊渡假赌尊渡假赌尊渡假赌
尊渡假赌尊渡假赌尊渡假赌original
2024-01-25 11:20:341143parcourir

"fork()" sous Linux est une fonction d'appel système utilisée pour créer un nouveau processus. Elle créera une copie du processus actuel, appelée processus enfant. Le processus enfant est presque identique au processus parent, y compris le code. les descripteurs de données et de fichiers ouverts, etc., ont le prototype "pid_t fork(void);".

Quelle est la fonction fork sous Linux

Sous Linux, fork() est une fonction d'appel système utilisée pour créer un nouveau processus. Cette fonction crée une copie du processus actuel, appelée processus enfant. Le processus enfant est presque identique au processus parent, y compris le code, les données, les descripteurs de fichiers ouverts, etc. Le prototype de la fonction

fork() est le suivant :

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

pid_t fork(void);

Parmi eux, pid_t est un type entier utilisé pour représenter l'ID du processus (PID). La fonction fork() n'a aucun paramètre.

Il y aura deux valeurs de retour après l'appel de la fonction fork() :

  • Dans le processus parent, fork() renvoie le PID du processus enfant (l'ID du processus enfant).
  • Dans le processus enfant, fork() renvoie 0.

Par conséquent, vous pouvez déterminer si le code actuel est exécuté dans le processus parent ou dans le processus enfant en jugeant la valeur de retour de fork().

Ce qui suit est un exemple de code simple qui démontre l'utilisation de base de la fonction fork() :

#include <stdio.h>
#include <unistd.h>

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

    if (pid < 0) {
        fprintf(stderr, "Fork failed.
");
        return 1;
    }
    else if (pid == 0) {
        printf("This is the child process. PID: %d
", getpid());
    }
    else {
        printf("This is the parent process. Child PID: %d
", pid);
    }

    return 0;
}

Dans le code ci-dessus, nous appelons la fonction fork() et déterminons si elle est actuellement dans le processus parent ou dans le processus enfant. basé sur la valeur de retour. Dans le processus parent, nous imprimons le PID du processus enfant ; dans le processus enfant, nous imprimons notre propre PID.

Il convient de noter que la fonction fork() copiera complètement la mémoire du processus parent vers le processus enfant, y compris le tas, la pile et les variables globales. Par conséquent, après fork(), le processus parent et le processus enfant exécuteront leurs propres codes séparément sans interférer les uns avec les autres.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn