Я пытался выяснить, как механизм fork-exec используется внутри Linux. Все происходило по плану, пока некоторые веб-страницы не запутали меня.
Говорят, что дочерний процесс должен строго использовать _exit()
вместо простого exit()
или нормального возврата из main()
.
Как я знаю, Linux shell fork-execs выполняет каждую из внешних команд; предполагая, что я сказал выше, верно, вывод заключается в том, что ни одна из этих внешних команд или любое другое выполнение, происходящее внутри оболочки Linux, не может нормально работать!
Википедия и некоторые другие веб-страницы утверждают, что мы должны использовать _exit()
только для предотвращения дочернего процесса, вызывающего удаление родительских временных файлов, в то время как вероятная двойная промывка буферов stdio может произойти. хотя я понимаю первое, я не знаю, как двойная промывка буферов может быть вредной для системы Linux.
Я потратил весь день на это... Спасибо за любое разъяснение.