在C ++中使用的不同版本的exec是什么?

这些都是可以在C ++中使用的exec版本

execl execle execlp execv execve execvp 

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

差异是以下的组合:

  1. L vs V :是否要将parameter passing给exec'ed程序

    • L :调用中的单个参数(variables参数列表): execl()execle()execlp()execlpe()
    • V :作为一个char * execv()execve()execvp()execvpe()

    当要发送到exec'ed进程的参数数量是可变的时,数组格式非常有用,因为在事先不知道的情况下,所以在函数调用中不能放入固定数量的参数。

  2. E :最后一个带有'e'的版本让你另外传递一个char *数组,这个char *数组是在exec'ed程序启动之前添加到生成的进程环境中的一组string。 还有另外一种传递参数的方法。

  3. P :那里带有'p'的版本使用环境pathvariables来search要执行的可执行文件。 没有“p”的版本需要在可执行文件的文件名前加上一个绝对或相对的文件path,如果它不在当前的工作目录中的话。

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

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

它是C运行时库的Posix扩展。 如果官方的Posix文件不够,那么我可以推荐一本书 – 塞缪尔P.哈比森,盖伊L.Steele,2002年“CA参考” #416 – 掩盖这个问题。