повторное воспитание объяснено на примере

#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, которое выводит «Завершено».