Я дал следующий код:параллельных процессов с использованием вилка()
main()
{
int i, rc;
for (i = 0; i<=1; i++)
{
if((rc=fork()) == 0)
{
printf("Child %d executing\n",i);
} /*end if*/
} /*end for*/
}
printf("All children created\n");
Я также дал решение возможных перестановок из которых может иметь место выходы.
Ребенок 0 выполняет |
Ребенок 1 выполняет | Ребенок 1 Все дети создали |
Ребенок 1 выполняет | Ребенок 2 Все дети создали |
Ребенок 1 выполняет | Grand child Все дети создали |
Все дети создали | Родитель
Я знаю, что эти результаты создаются каждым процессом, но я просто возникли проблемы отслеживания их понять КАК происходят эти выходы. Я знаю, fork()
создает процесс, и if (fork() == 0)
означает, что это дочерний процесс, но если кто-нибудь может помочь мне понять, где ответы за пределами Ребенок 0 выполняет | Пришли спасибо. Я считаю, что | это просто описание того, какой процесс в настоящее время выполняется. Почему child 1
может создать «великого ребенка», но ребенок 0 не может?
Пожалуйста, отредактируйте свой вопрос, чтобы заменить «возможные перестановки, из которых могут произойти выходы», чем-то ясным. Обязательно четко объясните, каков последующий блок, который следует за ним. (Это своего рода искажение вывода процесса и маркировки, а имена процессов в маркировке не объясняются.) (Кроме того, «Child 1 executing» будет выводиться только дважды). См. Мой ответ. – philipxy