Здравствуйте, я новичок в изучении системных вызовов. В настоящее время я изучаю системные вызовы fork() и wait(). Я знаю, что fork() создает новый дочерний процесс. Что меня смущает, так это вызов wait().
Вот что я понимаю до сих пор:
(1) Когда процесс умирает, он переходит в «состояние зомби», т.е. он не выпускает свой PID, а ждет, пока его родитель подтвердит, что дочерний процесс умер, а затем освобождается PID
(2) Итак, нам нужен способ выяснить, когда завершился дочерний процесс, чтобы мы не оставляли процессы в состоянии зомби
Меня смущают следующие вещи:
(1) При запуске программы на C, в которой я разветвляю новый дочерний процесс, если я не вызываю wait() явно, выполняется ли это внутренне, когда дочерний процесс завершается? Потому что вы все еще можете написать блок кода на C, где вы запускаете fork() без wait(), и кажется, что он работает нормально?
(2) Что делает wait()? Я знаю, что он возвращает PID дочернего процесса, который был завершен, но как это полезно/связано с выпуском PID завершенного процесса?
Прошу прощения за такие наивные вопросы, но мне было очень любопытно, и я не смог найти хороших ресурсов в Интернете! Ваша помощь очень ценится!