#c #linux #process
Вопрос:
Я пытаюсь понять процесс воспитания детей в Linux. Поэтому, когда родительский процесс внезапно завершается, дочерний процесс принимается процессом инициализации. Это и есть воспитание заново.
Я не в состоянии понять приведенный ниже код, который показывает, как работает повторное воспитание.
Сначала процесс разветвляется, и запускается дочерний процесс.
Выполняется первый оператор «printf».
Затем вызывается sleep (). Почему после этого печатается «прекращено»?
Вызывается ли когда-либо родительский процесс?
Пожалуйста, кто-нибудь объясните мне, как это работает?
#include lt;stdio.hgt; #include lt;unistd.hgt; int main() { if (fork() == 0) { // child process printf("My parent's PID is %dn", getppid()); sleep(2); printf("My parent's PID is %dn", getppid()); } else { // parent process sleep(1); } // both processes printf("Terminatedn"); }
Вывод:
My parent's PID is 18892 Terminated shell $ My parent's PID is 1 Terminated
Комментарии:
1. Что происходит с обычным потоком программы в дочернем устройстве после выполнения второго printf?
2. я просто хочу знать, почему код выводит это
3. Потому что после 2-го printf выполнение возобновляется после тела else, которое выводит «Завершено».