Пытаюсь выяснить, как работает fork () в данном контексте, но я, похоже, не понимаю, как достигается ответ - PullRequest
0 голосов
/ 31 октября 2018
#include <stdio.h>
#include <unistd.h>

int main(void)
{
    int pid1=0, pid2=0, pid3=0;
    pid1 = fork() ;
    pid2 = fork() ;
    if(pid1 == 0 ) {
        printf("A\n") ;
    } else {
        pid3 = fork() ;
        printf("B\n") ;
    }
    if (pid2 != 0 && pid3 != 0) {
        printf("C\n") ;
    }
}

Какое общее количество процессов будет создано при запуске этой программы? Сколько из каждого символа от «A» до «C» будет напечатано? Кратко объясните почему.

2 A 4 B 1 C (2 оценки)

6 процессов (включая исходный) (2 оценки)

1 Ответ

0 голосов
/ 31 октября 2018

Я смог понять это с помощью вас, ребята. Решение пришло с диаграммой, но это сбило с толку. Однако, используя двоичное дерево, я смог создать лучшую версию диаграммы, которая лучше объясняет процесс.

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

enter image description here

...