linux-kernel
Системный вызов Fork
Поиск…
системный вызов 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
от дочернего элемента и родителя зависит от механизма планирования, который зависит исключительно от системы.