„fork()“ ist in Linux eine Systemaufruffunktion, die zum Erstellen eines neuen Prozesses verwendet wird. Sie erstellt eine Kopie des aktuellen Prozesses, einen sogenannten untergeordneten Prozess. Der untergeordnete Prozess ist fast identisch mit dem übergeordneten Prozess, einschließlich Code. Daten- und Open-File-Deskriptoren usw. haben den Prototyp „pid_t fork(void);“.
Unter Linux ist fork() eine Systemaufruffunktion, die zum Erstellen eines neuen Prozesses verwendet wird. Diese Funktion erstellt eine Kopie des aktuellen Prozesses, einen sogenannten untergeordneten Prozess. Der untergeordnete Prozess ist nahezu identisch mit dem übergeordneten Prozess, einschließlich Code, Daten, Deskriptoren für offene Dateien usw. Der Prototyp der Funktion
fork() lautet wie folgt:
#include <sys/types.h> #include <unistd.h> pid_t fork(void);
Unter diesen ist pid_t ein ganzzahliger Typ, der zur Darstellung der Prozess-ID (PID) verwendet wird. Die Funktion fork() hat keine Parameter.
Nach dem Aufruf der Funktion fork() gibt es zwei Rückgabewerte:
Daher können Sie feststellen, ob der aktuelle Code im übergeordneten Prozess oder im untergeordneten Prozess ausgeführt wird, indem Sie den Rückgabewert von fork() beurteilen.
Das Folgende ist ein einfacher Beispielcode, der die grundlegende Verwendung der Funktion fork() demonstriert:
#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; }
Im obigen Code rufen wir die Funktion fork() auf und bestimmen, ob sie sich derzeit im übergeordneten Prozess oder im untergeordneten Prozess befindet basierend auf dem Rückgabewert. Im übergeordneten Prozess drucken wir die PID des untergeordneten Prozesses; im untergeordneten Prozess drucken wir unsere eigene PID.
Es ist zu beachten, dass die Funktion fork() den Speicher des übergeordneten Prozesses vollständig in den untergeordneten Prozess kopiert, einschließlich Heap, Stack und globale Variablen. Daher führen der übergeordnete Prozess und der untergeordnete Prozess nach fork() ihre eigenen Codes getrennt aus, ohne sich gegenseitig zu stören.
Das obige ist der detaillierte Inhalt vonWas ist die Fork-Funktion unter Linux?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!