当我打电话时execvp
, 例如execvp(echo, b)
其中 b 是命令 a 的参数数组,稍后更改该数组是否会影响之前进行的 execvp 调用?当我尝试调用 execp(echo, b) 时,它最终打印出 (null) 而不是 b 内部的内容。谁能指出为什么以及我必须做什么才能正确传递参数?
打电话后exec()
或者如果它是亲戚,你原来的程序没有exist不再了。这意味着该程序中的任何内容都不会影响之后的任何内容exec()
调用,因为它永远不会运行。也许您没有正确构建参数数组?这是一个快速工作示例execvp()
:
#include <unistd.h>
int main(void)
{
char *execArgs[] = { "echo", "Hello, World!", NULL };
execvp("echo", execArgs);
return 0;
}
来自execvp()手册页 http://linux.die.net/man/3/execvp:
The execv()
, execvp()
, and execvpe()
函数提供指向空终止字符串的指针数组,这些字符串表示新程序可用的参数列表。按照惯例,第一个参数应该指向与正在执行的文件关联的文件名。指针数组must被终止NULL
指针。
一个常见的错误是跳过有关“按照惯例,第一个参数应该指向与正在执行的文件关联的文件名”的部分。这就是确保echo
得到“回声”为argv[0]
,这大概取决于。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)