Простой способ узнать это добавить эту строку перед циклом while(1)
:
printf("I am process: %d, my parent is %d\n", (int) getpid(), (int) getppid());
Пример вывода:
Я - процесс: 4365, мой родитель -8358
Я процесс: 4366, мой родитель 4365
Я процесс: 4367, мой родитель 4365
Я процесс: 4369, мой родитель 4365
Я процесс: 4368, мойРодитель: 4366
Я - процесс: 4370, мой родитель - 4366
Я - процесс: 4371, мой родитель - 4367
Я - процесс: 4372, мой родитель - 4368
Всего 8 процессов, каждый с одним потоком.
Что случилось? 8358 была моей оболочкой. Когда я выполнил этот код, он создал процесс 4365. Это один.
4365 создал три процесса, один, когда у него было еще два цикла (4366), другой, когда еще один цикл (4367)и один на своем последнем цикле (4369). Это еще три, так что теперь у нас до четырех.
Тот, который он создал с двумя циклами, чтобы идти (4366) создал еще два процесса, один, когда у него был один цикл, чтобы идти (4368) и один, когдау него не было петель, чтобы идти (4370). Это еще два, так что теперь у нас до шести.
У нас еще есть два процесса с одним циклом, один из которых создан первым процессом (4367), а второй - вторым процессом (4368). Каждый из них создает еще один процесс (4371 и 4372). Это еще два, так что теперь мы до 8.