Я пытаюсь изучить программирование в UNIX и натолкнулся на вопрос относительно fork (). Я понимаю, что fork () создает идентичный процесс текущего запущенного процесса, но где он начинается? Например, если у меня есть код
int main (int argc, char **argv)
{
int retval;
printf ("This is most definitely the parent process\n");
fflush (stdout);
retval = fork ();
printf ("Which process printed this?\n");
return (EXIT_SUCCESS);
}
Выход:
Это определенно родительский процесс.
Какой процесс напечатал это?
Какой процесс напечатал это?
Я думал, что это fork()
создает тот же процесс, поэтому я изначально, что в этой программе, fork()
вызов будет рекурсивно вызываться навсегда. Я думаю, что новый процесс, созданный из fork()
запускается после fork()
вызова?
Если я добавлю следующий код, чтобы различать родительский и дочерний процессы,
if (child_pid = fork ()) printf ("This is the parent, child pid is %d\n", child_pid);
else printf ("This is the child, pid is %d\n",getpid ());
после вызова fork (), где дочерний процесс начинает свое выполнение?
man fork
достаточно уверен, чтобы ответить на ваш вопрос, кстати