在C和C++中使用的exec有哪些不同版本?

nod*_*nja 81 c c++ exec

这些是可以在C(和C++)中使用的exec的所有版本

execl
execle
execlp
execv
execve
execvp
Run Code Online (Sandbox Code Playgroud)

他们之间有什么区别?你怎么知道使用哪一个?

Chr*_*sto 166

差异是以下组合:

  1. L vs V:是否要将参数传递给exec'ed程序

    • 大号:在呼叫个体参数(变量参数列表): ,execl(),execle(),execlp()execlpe()
    • V:作为字符数组*execv(),execve(),execvp(),和execvpe()

    当要发送到exec'ed进程的参数数量可变时,数组格式很有用 - 如事先未知的那样,因此您无法在函数调用中输入固定数量的参数.

  2. E:最后带有'e'的版本允许你另外传递一个char*数组,它是在exec'ed程序启动之前添加到衍生进程环境的一组字符串.另一种传递参数的方式,真的.

  3. P:其中带有'p'的版本使用环境路径变量来搜索名为要执行的可执行文件.没有'p'的版本需要在可执行文件的文件名前加上绝对或相对文件路径,如果它不在当前工作目录中.


Ian*_*ton 5

Opengroup是核心c/c ++函数的最佳通用参考之一.

exec*的文档在这里:http://pubs.opengroup.org/onlinepubs/009695399/functions/environ.html

  • 这并没有真正回答问题,只是链接。 (2认同)