Разделение процесса на 7 детей без зацикливания - PullRequest
0 голосов
/ 20 февраля 2020

Как я могу создать 7 процессов, используя одного родителя всего за 3 forks() вызовов? Цикл не допускается из 7 1 является родительским

Ответы [ 2 ]

3 голосов
/ 20 февраля 2020

Я попробовал

#include <stdio.h>
#include <unistd.h>
#include <sys/wait.h>

int main(void) {
    printf("master process is %d.\n", getpid());
    fork();
    fork();
    fork();
    wait(0);
    printf("my pid is %d; my parent pid is %d\n", getpid(), getppid());
    return 0;
}

и получил вывод

master process is 28982.
my pid is 28982; my parent pid is 31294
my pid is 28985; my parent pid is 28982
my pid is 28984; my parent pid is 28982
my pid is 28983; my parent pid is 1
my pid is 28986; my parent pid is 28984
my pid is 28988; my parent pid is 28983
my pid is 28987; my parent pid is 1
my pid is 28989; my parent pid is 28987
0 голосов
/ 20 февраля 2020

Общее количество процессов, созданных с помощью fork (), можно найти с помощью 2 ^ n , где n - количество вызовов функции fork () . Здесь, если мы вызовем fork () 3 раза, то будут созданы процессы 2 ^ 3 , т.е. 8 .

...