这是我的第一个档案:
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");
}
这是exec文件:
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文件中被阻止了,因此在我的printf
之后的execl
,在1s文件中,没有显示:/
而且当我执行argv [0]的printf时,它应该显示文件路径,但在这里它显示我“ii”
答案 0 :(得分:3)
我在exec文件中阻塞,所以我的execl之后的printf,在1s 文件,不显示
没错,execl
不会返回(除非出现错误)。一旦你exec
没有回头:实际上你的过程会变成另一个过程,执行一个不同的程序。
当我执行argv [0]的printf时,它应该显示我的文件 路径,但在这里它显示我“ii”
你认为argv[0]
不应该被视为理所当然。父进程可以指定它想要的任何内容(甚至省略它)。在您的案例中为子项argv[0]
指定ii
。如果要正确设置(无论可能是什么),请添加第二个"/exec"
。
附注:如果您想要一种简单的方法来执行某些操作,您可能需要查看标准的system(3)
和popen(3)
函数。