2

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

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

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

任何人都可以帮忙吗?

4

1 回答 1

2

argv[0] holds only the filename, but not the full directory path, which execl requires.

Try sth like this:

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

and use above constructed cwd in execl.

于 2013-10-15T17:44:39.587 回答