execl不会执行

时间:2013-10-15 17:37:35

标签: c exec

在项目上工作,当我调用execl()时,它无效。它在fork之后调用,并且应该重新执行当前文件。 (参数在文件的前面声明):

argument = argv[0];
int err =execl(argument, argument, left, "1", NULL);
if (err == -1)  printf("never execled");

我读过的所有东西都让我觉得这应该有用。第一个参数指定路径,第二个指定要执行的文件,第三个是字符串,第四个是占位符,以便当execl通过时arc == 3,第四个是空终止符。

有人可以帮忙吗?

1 个答案:

答案 0 :(得分:2)

argv[0]仅包含文件名,但不包含execl所需的完整目录路径。

试试这样:

char *cwd;
cwd=malloc(255);
getcwd(cwd,255);
strcat(cwd,"/");
strcat(cwd,argv[0]);

并在cwd中使用上面构建的execl