Учебник правильный. 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