gpt4 book ai didi

用 execve 调用 ls

转载 作者:太空狗 更新时间:2023-10-29 11:29:53 26 4
gpt4 key购买 nike

下面的代码应该用 excve 调用一个命令,出于某种原因我没有打印当前目录的内容,但程序仍然返回 "ok"

  1 #include <stdio.h>
2 #include <unistd.h>
3 int main ()
4 { char *argv[]={"ls",NULL};·
5 char *env[]={"PATH=/usr/local/sbin/:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games",NULL};
6 if(execve("ls",argv,env))
7 { printf("ok\n");
8 }
9 else
10 { printf("not ok\n");
11 }
12 return 0;
13 }

最佳答案

因为 execve 没有返回成功,很明显调用失败了。它在错误时返回 -1,这将被视为 true(非零)。这就是为什么它说好的。

最可能的原因是您没有指定可执行文件的完整路径,这是 execve 的要求。或者,如果您希望搜索路径,请改用 execvpe。参见 http://linux.die.net/man/3/exec血淋淋的细节。

关于用 execve 调用 ls,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13494787/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com