linux-kernel
Gabel Systemaufruf
Suche…
Fork () Systemaufruf
fork()
ist ein Systemaufruf. Mit fork wird ein untergeordneter Prozess aus dem laufenden Prozess erstellt. Hierbei handelt es sich um eine Replik des übergeordneten Prozesses (Prozess, der fork()
). Der untergeordnete Prozess wird vom übergeordneten Prozess abgeleitet. Sowohl das übergeordnete Element als auch das untergeordnete Element haben unterschiedliche Adressräume. Jeder ist unabhängig von den an den Variablen vorgenommenen Änderungen.
Der Kindprozess hat eine eigene PID (Prozessidentifikation). PPID (Parent Process ID) des untergeordneten Prozesses entspricht der PID des übergeordneten Prozesses.
Format:
Header-Datei:
#include <unistd.h>
Funktionsdeklaration:pid_t fork(void);
fork () benötigt keine Eingabeargumente.
Bei erfolgreicher Erstellung des untergeordneten Prozesses wird die PID des untergeordneten Prozesses an den übergeordneten Prozess und 0 im untergeordneten Prozess zurückgegeben. Bei einem Fehler wird -1
ohne dass ein Prozess erstellt wurde.
Anwendungsbeispiel:
#include <stdio.h>
#include <unistd.h>
void child_process();
void parent_process();
int main()
{
pid_t pid;
pid=fork();
if(pid==0)
child_process();
else
parent_process();
return 0;
}
/*getpid() will return the Pid of the
current process executing the function */
void child_process()
{
printf("Child process with PID : %d and PPID : %d ", getpid(),getppid());
}
void parent_process()
{
printf("Parent process with PID : %d", getpid());
}
Die Reihenfolge der printf
Anweisungen von Child und Parent hängt von dem Scheduling-Mechanismus ab, der rein systembedingt ist.