正在处理一个项目,当我调用 execl() 时,它不起作用。它在 fork 之后被调用,并且应该重新执行当前文件。 (参数在文件前面声明):
argument = argv[0];
int err =execl(argument, argument, left, "1", NULL);
if (err == -1) printf("never execled");
我读过的所有内容都让我觉得这应该可行。第一个参数指定路径,第二个参数指定要执行的文件,第三个参数是字符串,第四个参数是占位符,以便当执行 execl 时 arc == 3,第四个参数是空终止符。
有人可以帮忙吗?
最佳答案
argv[0]
仅包含文件名,但不包含 execl
所需的完整目录路径。
尝试这样:
char *cwd;
cwd=malloc(255);
getcwd(cwd,255);
strcat(cwd,"/");
strcat(cwd,argv[0]);
并在execl
中使用上面构造的cwd
。
关于c - execl 不会执行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19387513/