首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >调用execve( man,args,env )时出现execve错误

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

Stack Overflow用户
提问于 2013-02-10 12:40:52
回答 1查看 565关注 0票数 1

我在使用这个execve命令时遇到了问题。我可以使用它在我的程序中很好地运行大多数其他命令,但是如果我尝试执行man ls之类的操作,我会得到这个错误。

代码语言:javascript
复制
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

我是这样称呼它的:

代码语言:javascript
复制
execve( cmdPath, args, env );

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

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

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-02-10 13:59:40

Null终止您传递给execve的参数。就像这样

代码语言:javascript
复制
char *args[3];
// other args..
args[2] = (char*) 0;

否则,它是未定义的行为,这可能就是为什么它在过去有时会起作用,而这一次你却不走运。

这是可行的:

代码语言:javascript
复制
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);
}
票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/14794783

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档