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