2017-01-25 4 views
2

Я заметил, что запись для execlp() не находится в разделе системного вызова (2) на страницах руководства, а вместо этого находится в разделе (3), подпрограммах. Почему это, а fork() находится в разделе (2)?Почему не `execlp()` в разделе системных вызовов

Вот ссылки:
https://linux.die.net/man/2/fork
https://linux.die.net/man/3/execlp

ответ

4

Поскольку execlp() (и все другие execXXX() функции в одной и той же страницы человека) является функцией библиотеки оберткой execve() системного вызова. Шаги по сбору вариационных аргументов в массив и поиск программы в переменной среды PATH выполняются в коде режима пользователя в библиотеке перед тем, как вызвать ядро ​​для запуска выполнения программы.

fork(), с другой стороны, просто вызывает непосредственно в ядре.

Смежные вопросы