Поиск…


системный вызов fork ()

fork() - системный вызов. fork используется для создания дочернего процесса из текущего процесса, который является репликой родительского процесса (Process, который выполнял fork() ). Детский процесс происходит из родительского процесса. И родительский, и дочерний имеют другое адресное пространство, каждое из которых не зависит от изменений, внесенных в переменные.

У дочернего процесса есть собственный PID (идентификация процесса). Идентификатор PPID (идентификатор родительского процесса) дочернего процесса такой же, как PID родительского процесса.

Формат:

Заголовочный файл: #include <unistd.h>
Объявление функции: pid_t fork(void);

fork () не нуждается ни в каких входных аргументах.

При успешном создании дочернего процесса pid дочернего процесса возвращается родительскому процессу, а 0 возвращается в дочерний процесс. On Failure return -1 без создания процесса.

Пример использования:

#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());    
}

Последовательность инструкций printf от дочернего элемента и родителя зависит от механизма планирования, который зависит исключительно от системы.



Modified text is an extract of the original Stack Overflow Documentation
Лицензировано согласно CC BY-SA 3.0
Не связан с Stack Overflow