0

这是我的第一个文件:

int main(int argc, char *argv[]){

printf("\n\nJe suis dans le fils\n\n");

execl("/exec","ii",NULL);

printf("\n\nJe suis revenu dans le fils\n\n");
}

这是执行文件:

int main(int argc, char *argv[]){

printf("\n\n\n\nJe suis dans le exec\n\n\n\n");
printf("\n\n argc = %d \n\n argv[0] = %s \n\n argv[1] = %s",argc,argv[0],argv[1]);

}

问题 :

我在 exec 文件中被阻止,所以在 1s 文件中的printfmy 之后execl不显示:/ 而且当我通常执行 argv[0] 的 printf 时,它应该显示文件路径但这里显示了我“二”

4

1 回答 1

3

我在 exec 文件中被阻止,所以我的 execl 之后的 printf 在 1s 文件中不显示

没错,execl不会返回(除非出现错误)。一旦你exec没有回头路:实际上你的进程将自己变成另一个进程,执行不同的程序。

当我正常执行 argv[0] 的 printf 时,它应该向我显示文件路径,但在这里它向我显示“ii”

好吧,正如你所想的那样,argv[0]不应该被视为理所当然。父进程可以指定它想要的任何内容(甚至省略它)。在您的情况下,您为孩子指定argv[0]ii. 如果您想正确设置它(无论是什么),请添加第二个"/exec".


旁注:如果您想要一种简单的方法来执行某些操作,您可能需要查看标准system(3)popen(3)功能。

于 2013-08-30T19:39:01.687 回答