linux-kernel
Wywołanie systemowe Fork
Szukaj…
wywołanie systemowe fork ()
fork()
to wywołanie systemowe. fork służy do utworzenia procesu potomnego z uruchomionego procesu, który jest repliką procesu nadrzędnego (Process, który wykonał fork()
). Proces potomny pochodzi z procesu macierzystego. Zarówno rodzic, jak i dziecko mają inną przestrzeń adresową, każda z nich jest niezależna od zmian dokonanych w zmiennych.
Proces potomny ma swój własny PID (identyfikacja procesu). PPID (identyfikator procesu nadrzędnego) procesu potomnego jest taki sam jak PID procesu nadrzędnego.
Format:
Plik nagłówka:
#include <unistd.h>
Deklaracja funkcji:pid_t fork(void);
fork () nie potrzebuje żadnych argumentów wejściowych.
Po pomyślnym utworzeniu procesu potomnego pid procesu potomnego jest zwracany do procesu macierzystego, a 0 w procesie potomnym. W przypadku niepowodzenia zwraca -1
bez tworzenia procesu.
Przykład użycia:
#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());
}
Kolejność instrukcji printf
od dziecka i rodzica zależy od mechanizmu szeregowania, który zależy wyłącznie od systemu.