在项目上工作,当我调用execl()时,它无效。它在fork之后调用,并且应该重新执行当前文件。 (参数在文件的前面声明):
argument = argv[0];
int err =execl(argument, argument, left, "1", NULL);
if (err == -1) printf("never execled");
我读过的所有东西都让我觉得这应该有用。第一个参数指定路径,第二个指定要执行的文件,第三个是字符串,第四个是占位符,以便当execl通过时arc == 3,第四个是空终止符。
有人可以帮忙吗?
答案 0 :(得分:2)
argv[0]
仅包含文件名,但不包含execl
所需的完整目录路径。
试试这样:
char *cwd;
cwd=malloc(255);
getcwd(cwd,255);
strcat(cwd,"/");
strcat(cwd,argv[0]);
并在cwd
中使用上面构建的execl
。