gpt4 book ai didi

c - 调用 execve( man, args, env ) 时出现 execve 错误

转载 作者:塔克拉玛干 更新时间:2023-11-02 23:57:28 25 4
gpt4 key购买 nike

我在使用此 execve 命令时遇到问题。我可以在我的程序中使用它来运行大多数其他命令,但如果我尝试执行 man ls 之类的操作,我会收到此错误。

man: can't execute pager: No such file or directory
man: command exited with status 255: LESS=-ix8RmPm Manual page ls(1) ?ltline %lt?L/%L.:byte %bB?s/%s..?e (END):?pB %pB\%.. (press h for help or q to quit)$PM Manual page ls(1) ?ltline %lt?L/%L.:byte %bB?s/%s..?e (END):?pB %pB\%.. (press h for help or q to quit)$ MAN_PN=ls(1) pager -s

我是这样调用它的:

execve( cmdPath, args, env );

其中 cmdPath 是路径(在本例中为 /usr/bin/man)args 是一个 char*,其中 args[0] = manargs[1] = lsenv 是我从 main 传递过来的 env*[]

任何帮助将不胜感激。我快死在这里了。

最佳答案

Null 终止传递给 execve 的参数。有点像

char *args[3];
// other args..
args[2] = (char*) 0;

否则这是未定义的行为,这可能就是为什么它在过去有时有效而这次你不走运的原因。

这个有效:

int main(int argc, char *argv[], char *env[])
{
char *args[3];

args[0] = "man";
args[1] = "ls";
args[2] = (char*) 0;

execve("/usr/bin/man", args, env);
}

关于c - 调用 execve( man, args, env ) 时出现 execve 错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14794783/

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