【问题标题】:Why isn't `execlp()` in the system call section为什么系统调用部分没有`execlp()`
【发布时间】:2017-01-26 04:50:13
【问题描述】:

我注意到execlp() 的条目不在手册页的系统调用 (2) 部分,而是位于 (3) 部分的子例程中。为什么会这样,而 fork() 位于第 (2) 部分?

这里是链接:
https://linux.die.net/man/2/fork
https://linux.die.net/man/3/execlp

【问题讨论】:

    标签: linux system-calls manpage


    【解决方案1】:

    因为execlp()(以及同一手册页中的所有其他execXXX() 函数)是围绕execve() 系统调用的库函数包装器。将可变参数收集到一个数组中以及在PATH 环境变量中搜索程序的步骤是在库中的用户模式代码中完成的,然后调用内核来启动程序的执行。

    另一方面,fork() 只是直接调用内核。

    【讨论】:

      猜你喜欢
      • 2014-11-17
      • 2019-02-22
      • 2020-04-22
      • 1970-01-01
      • 2018-06-23
      • 2014-09-28
      • 2018-11-10
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多