Fork erstellt einen neuen Prozess. Er ist eine Kopie des nachfolgenden Codes des übergeordneten Prozesses. Er kann auch als unabhängiger Code im untergeordneten Prozess verwendet werden.
Verwenden Sie getpid, um zu bestimmen, ob der aktuelle Prozess ein untergeordneter Prozess oder ein übergeordneter Prozess ist.
Betrachten Sie das folgende Beispiel:
Nachfolgend der zitierte Inhalt:
#include <sys/types.h> #include <unistd.h> #include <stdio.h> int main() { pid_t pid; static int n = 0; printf("fork!n"); switch (pid = fork()) { Fall-1: { /* ..pid.-1.fork.... */ /* ....... */ /*.........*/ perror("Der Fork ist fehlgeschlagen!"); brechen; } Fall 0: { /* pid.0.... */ printf("[Kind]ich bin ein Kind!n"); printf("[child]getpid=[%d]n", getpid() ); printf("[child]pid=[%d]n", pid ); brechen; } Standard: { /* pid..0.... */ printf("[parent]ich bin ein Elternteil!n" ); printf("[parent]getpid=[%d]n",getpid() ); printf("[parent]pid=[%d]n",pid ); brechen; } } printf("n=[%d]n", n++); 0 zurückgeben; } |
Dieses Beispiel wurde mit gcc unter Linux kompiliert und die laufenden Ergebnisse lauten wie folgt:
Nachfolgend der zitierte Inhalt:
Gabel! [Kind]Ich bin ein Kind! [child]getpid=[7422] [child]pid=[0] n=[0] [Eltern]Ich bin Eltern! [parent]getpid=[7421] [parent]pid=[7422] n=[0] |