Почему execve() не возвращается в случае успеха?

Я прочитал справочные страницы.

Все, что я понял по этой ссылке http://support.sas.com/documentation/onlinedoc/sasc/doc750/html/lr2/zid-7281.htm заключается в том, что A successful call to execve does not have a return value because the new process image overlays the calling process image

Мне не очень понятно, почему это произойдет? И если новый процесс перекрывает вызывающий процесс, почему он возвращается только при сбое, а не при успехе?

1 ответ

Потому что, если он не может сделать то, что пытается сделать, то есть заменить процесс на новый, то имеет смысл вернуться, чтобы сообщить вызывающей стороне, что он потерпел неудачу.

Если это удастся, то код, который вызвал execve() больше не присутствует, его заменило успешное выполнение этой функции, поэтому, очевидно, он больше не может ничего делать. Возвращение это такая вещь.

Другие вопросы по тегам