Я намагаюся вивчити програмування 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
напевне, щоб відповісти на ваше запитання, btw