Выполнение Fork () и количество процессов - PullRequest
0 голосов
/ 18 сентября 2018

Если процесс выполняет следующий код

fork();
fork();
fork();

Общее количество созданных дочерних процессов задается как 7 в учебнике.Но как это происходит

fork генерирует 2 процесса правильно?Оба процесса упоминаются как дочерние процессы?Один процесс является родительским родителем, а другой - правым?Даже если оба процесса упоминаются как дочерние процессы, 2 * 3 = 6?Основной процесс не является дочерним процессом, как число 7 входит в картину.

1 Ответ

0 голосов
/ 18 сентября 2018

Учебник правильный. fork создает только один дочерний процесс. fork возвращает PID дочернего процесса в родительском процессе и 0 в дочернем процессе.

Ниже дерева, показывающего это. Числа показывают, сколько форков еще предстоит выполнить процессу. Круглые скобки означают, что процесс является родительским процессом, квадратные скобки означают, что процесс является дочерним процессом - очевидно, дочерний процесс станет родительским процессом в следующем поколении (следующий вызов fork). Каждое поколение в отдельной строке.

                   (3)
         (2)                   [2]
    (1)      [1]           (1)     [1]
(0)   [0]  (0)  [0]     (0)  [0]  (0)  [0]

Существует ровно 7 дочерних процессов (квадратные скобки).

Программа Python, чтобы доказать это:

import os
print os.fork()
print os.fork()
print os.fork()

Вот вывод. Порядок случайный, но помните, что fork возвращает 0 в дочернем процессе:

13196
0
13197
13198
0
13199
0
0
13200
13201
0
13202
0
0
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...