Это вопрос из недавнего вступительного экзамена GATE.
Процесс выполняет код
fork();
fork();
fork();
Общее количество дочерних процессов составляет
(A) 3. (B) 4. (C) 7. (D) 8.
Мой ответ было (A) 3.
Я считаю, что после каждого fork() будет создан 1 дочерний процесс, а выполнение родительского продолжится в обычном режиме.
Ненадежный ответ (без каких-либо объяснений) от коучинговых институтов: (C)7.
Я думаю, что они считают, что каждая вилка будет создавать дочерний процесс и новый родительский процесс. И они также учитывают все родительские процессы. [Мне не разрешено публиковать изображение, но мой друг объяснил на диаграмме дерево, в котором каждый левый узел разветвляется на два узла. Следовательно, 4 родительских узла слева и 3 дочерних узла справа. Но в Вопросе четко упоминается только дочерний процесс. А также я не думаю, что родительский процесс создается заново при разветвлении.
Может ли кто-нибудь объяснить некоторые основы разветвления и правильное решение вышеуказанного вопроса, пожалуйста.
P.S. Если язык программирования имеет какое-либо значение в концепции разветвления, то, согласно учебной программе, это должна быть программа на C или C++.