Использование fork () для создания 1 родительского и 3 его дочерних процессов
Опубликовано: 16 Февраля, 2022
Программа для создания четырех процессов (1 родительский и 3 дочерних), где они завершаются в следующей последовательности:
(а) Родительский процесс наконец завершается
(b) Первый дочерний элемент завершается раньше родителя и после второго ребенка.
(c) Второй ребенок прекращает свое существование после последнего и перед первым ребенком.
(d) Третий ребенок оплодотворяется первым.
Предпосылка: fork (),
Recommended: Please try your approach on {IDE} first, before moving on to the solution.
// CPP code to create three child // process of a parent #include <stdio.h> #include <stdlib.h> #include <unistd.h> // Driver code int main() { int pid, pid1, pid2; // variable pid will store the // value returned from fork() system call pid = fork(); // If fork() returns zero then it // means it is child process. if (pid == 0) { // First child needs to be printed // later hence this process is made // to sleep for 3 seconds. sleep(3); // This is first child process // getpid() gives the process // id and getppid() gives the // parent id of that process. printf ( "child[1] --> pid = %d and ppid = %d
" , getpid(), getppid()); } else { pid1 = fork(); if (pid1 == 0) { sleep(2); printf ( "child[2] --> pid = %d and ppid = %d
" , getpid(), getppid()); } else { pid2 = fork(); if (pid2 == 0) { // This is third child which is // needed to be printed first. printf ( "child[3] --> pid = %d and ppid = %d
" , getpid(), getppid()); } // If value returned from fork() // in not zero and >0 that means // this is parent process. else { // This is asked to be printed at last // hence made to sleep for 3 seconds. sleep(3); printf ( "parent --> pid = %d
" , getpid()); } } } return 0; } |
Output:
child[3]-->pid=50 and ppid=47 child[2]-->pid=49 and ppid=47 child[1]-->pid=48 and ppid=47 parent-->pid=47
Этот код работает на платформе Linux.
Хотите узнать о лучших видео и практических задачах, ознакомьтесь с Базовым курсом C для базового и продвинутого C.