Я изучаю вилки и процессы в linux, и у меня есть вопрос относительно начального родительского процесса. Считается ли этот исходный родительский процесс программой?
Например, этот код, в котором я создаю 2 вилки
#include <unistd.h>
#include <stdio.h>
#include <stdlib.h>
int main(int argc, char **argv, char **envp)
{
printf("%d *\n", getpid());
fork();
printf("%d *\n", getpid());
fork();
printf("%d *\n", getpid());
sleep(20);
return EXIT_SUCCESS;
}
Из того, что я знаю, будет исходный родительский процесс (который я считаюпрограмма), а затем будет начальный форк, создающий дочерний процесс.
Это оставляет 2 процесса. Затем другой форк создает еще 2 дочерних процесса для 5 процессов, включая исходный родительский процесс.
Исходя из этого понимания, общее количество дочерних процессов составит 3 (2 ^ 2-1), а общее количество созданных процессовкроме того, исходный родительский процесс будет 4.
Правильно ли мое мышление?
Кроме того, что может привести к сбою разветвления?