在C ++中使用的不同版本的exec是什么?
这些都是可以在C ++中使用的exec版本
execl execle execlp execv execve execvp
他们之间有什么区别? 你怎么知道使用哪一个?
差异是以下的组合:
-
L vs V :是否要将parameter passing给exec'ed程序
- L :调用中的单个参数(variables参数列表):
execl()
,execle()
,execlp()
和execlpe()
- V :作为一个char *
execv()
,execve()
,execvp()
和execvpe()
当要发送到exec'ed进程的参数数量是可变的时,数组格式非常有用,因为在事先不知道的情况下,所以在函数调用中不能放入固定数量的参数。
- L :调用中的单个参数(variables参数列表):
-
E :最后一个带有'e'的版本让你另外传递一个char *数组,这个char *数组是在exec'ed程序启动之前添加到生成的进程环境中的一组string。 还有另外一种传递参数的方法。
-
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 – 掩盖这个问题。