我在使用这个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] = man,args[1] = ls env是我从main传递的env*[]。
任何帮助都将不胜感激。我要死在这里了。
发布于 2013-02-10 13:59:40
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);
}https://stackoverflow.com/questions/14794783
复制相似问题