Что я понимаю в функции fork (), так это то, что после создания дочернего процесса он ничего не знает о коде, который был обработан до того момента, как мы достигли «fork ()».Но в случае, если для статов используется несколько fork (), кажется, что дочерний процесс выполняет вычисление аргумента, даже если он был до создания fork ().
Например:
int main ()
{
if((fork())==(fork()))
printf ("Hello.\n");
printf ("Bye.\n");
return 1;
}
Тамбудет сумма 4 процесса, включая отца.В дочернем процессе (я буду называть его d), который был создан другим дочерним процессом, fork (), который создал наш процесс d, является вторым fork () в операторе if.
Несмотря на то, что первая функция fork () не должна быть знакома d, я понимаю, что процесс d вычисляет это 0 == 0 и выдает «Hello» (вывод верен) .IУ меня есть два вопроса:
1. Как получилось, что процесс d даже смог достичь первого fork () в операторе if, который был до fork (), который создал этот процесс d (второй)?
2. Почему в той точке, в которой мы находимся в процессе d, первый fork () равен 0, если это происходит только в дочернем процессе, созданном этим конкретным fork () (отцом d)?