Я пытаюсь понять, почему переменная pid0 печатается дважды с фактическим идентификатором. Как я понял, pid0 будет установлен в 0 для всех разветвленных процессов после первого раза.
Это моя основная функция:
int main() {
pid_t pid0, pid1, pid2;
pid0 = fork();
pid1 = fork();
if (pid0 == 0) pid2 = fork();
printf("pid0: %d, pid1: %d, pid2: %d\n", pid0, pid1, pid2);
return 0;
}
А вот вывод:
pid0: 3388, pid1: 3389, pid2: 32766
pid0: 3388, pid1: 0, pid2: 32766
pid0: 0, pid1: 3390, pid2: 3391
pid0: 0, pid1: 0, pid2: 3392
pid0: 0, pid1: 3390, pid2: 0
pid0: 0, pid1: 0, pid2: 0