У меня есть программа C с вызовом fork().Как работает fork() в gcc-компиляторе?
#include <stdio.h>
#include <unistd.h>
main ()
{
fork() ;
printf ("\nHello") ;
fork() ;
printf ("\nWorld") ;
}
Это выход я на НКУ:
Hello Hello World World World World
Если это не будет:
Hello Hello World World Hello Hello World World
Из-за следующего:
Line1: First fork creates a child process.
1.2: Prints 'Hello'
1.3:Creates a child process because of 2nd fork in it.
1.3.2:Prints 'Hello' and 'World'.
1.4:Prints 'World'.
Line2: Prints 'Hello'.
Line3: Second fork() creates child process
3.1:creates a child process
3.2: Prints 'Hello'
3.4: Prints 'World'
Line 4: Prints 'World'
Это как я думаю, эта программа будет работать. Не могли бы вы объяснить, где я ошибся. Вот почему я хочу понять, как работает эта функция.
Примечание. Я проверил страницу руководства, но я не очень понимаю ее.
Также номера являются номерами строк основной функции. Пример: 1.2 соответствует второй строке дочернего процесса, созданного вызовом fork() линии 1 основного() и т. Д.
Я не могу понять, как он производит этот конкретный результат. Итак, я хочу понять, что происходит во время fork(), вызывается простыми шагами?
Кстати, добавьте 'fflush (стандартный вывод)' после каждого 'printf', или выход может стать более сложным для понимания из-за буферизации библиотеки C. –