Heim  >  Artikel  >  Betrieb und Instandhaltung  >  Was ist die Fork-Funktion unter Linux?

Was ist die Fork-Funktion unter Linux?

尊渡假赌尊渡假赌尊渡假赌
尊渡假赌尊渡假赌尊渡假赌Original
2024-01-25 11:20:341041Durchsuche

„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);“.

Was ist die Fork-Funktion unter Linux?

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:

  • Im übergeordneten Prozess gibt fork() die PID des untergeordneten Prozesses (die ID des untergeordneten Prozesses) zurück.
  • Im untergeordneten Prozess gibt fork() 0 zurück.

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!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn