gpt4 book ai didi

c - execve 不接受环境参数

转载 作者:太空宇宙 更新时间:2023-11-04 08:20:37 25 4
gpt4 key购买 nike

我想编写一个程序来执行 Linux ls 命令。我真的只想输入 ls 而不是 /bin/ls,所以我想使用 execve (execvp 不是一个选项)。

我试过:

char *env[] = { "SHELL=/bin/bash",
"PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games",
"_=/usr/bin/env",
(char *)0 };
execve(parmList[0], parmList, env);

但它似乎不起作用,ls 无法识别,但 /bin/ls 可以。 parmList 没有问题,因为我用 execvp 试过了,它成功了。

有什么想法吗?

最佳答案

如果 parmList[0] 只包含 lsexecve() 将找不到 ls 命令除非它在当前目录中。

对于 execve(),环境中 PATH 的值是无关紧要的——execve() 不使用它。您将使用 execvp()(或 execvpe(),如果可用)在当前进程的 PATH 上执行命令。

关于c - execve 不接受环境参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33598869/

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