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.



Modified text is an extract of the original Stack Overflow Documentation
Licencjonowany na podstawie CC BY-SA 3.0
Nie związany z Stack Overflow