它的简单出现导致我使用execv():
int main(int argc , char* argv[]){
char* dir = getcwd(NULL, 0);
char* command[] = {"echo", "Hello", "World", "!!!", NULL};
execv(dir, command);
}根据我的理解,这应该是可行的。它正在编译,但什么也没有发生。
发布于 2013-06-10 21:58:57
execv的path参数应该是您想要运行的可执行文件的路径规范,而不仅仅是getcwd返回的目录。从手册页:
这些函数的初始参数是要执行的文件的路径名。
换句话说,你正在寻找类似这样的东西:
execv ("/bin/echo", command);您当前拥有的代码正在尝试运行您当前的目录,这不太可能有好的结果,如果您检查了execv和errno的返回值,您可能已经注意到了:轻推,轻推,眨眼,眨眼:-)
至于如何处理其他程序,您只需将它们的完整路径名替换为/bin/echo即可。
您还应该知道,exec是一个 of functions,每个a都有一些细微的变化。
一些允许传递环境,一些自动搜索可执行文件的路径(取决于给定的名称),还有一些使用变量参数列表而不是数组。如果你想使用自动路径搜索,你应该查看execvp而不是execv,这样你就不必担心可执行文件的位置了。
https://stackoverflow.com/questions/17025472
复制相似问题