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