当前位置: 技术问答>linux和unix
linux 下c 编程 一个关于execl的问题 希望请教
来源: 互联网 发布时间:2016-06-25
本文导语: 程序如下: pid_t childpid=fork(); if(childpid==0){ execl("/bin/ls","ls","-l",NULL); perror("Child failed to execl"); } if(childpid!=wait(NULL)) perror("parent failed to wait"); return 0; 问题是这样的exel正常执行完成后 红色和黄色的代码均没有输...
程序如下:
pid_t childpid=fork();
if(childpid==0){
execl("/bin/ls","ls","-l",NULL);
perror("Child failed to execl");
}
if(childpid!=wait(NULL))
perror("parent failed to wait");
return 0;
问题是这样的exel正常执行完成后 红色和黄色的代码均没有输出,而我把execl屏蔽掉就可以正常输出perror,请教下是什么原因没有输出perror语句???
pid_t childpid=fork();
if(childpid==0){
execl("/bin/ls","ls","-l",NULL);
perror("Child failed to execl");
}
if(childpid!=wait(NULL))
perror("parent failed to wait");
return 0;
问题是这样的exel正常执行完成后 红色和黄色的代码均没有输出,而我把execl屏蔽掉就可以正常输出perror,请教下是什么原因没有输出perror语句???
|
子进程执行
execl("/bin/ls","ls","-l",NULL);
后,下面的语句不会在执行
父进程会执行if(childpid!=wait(NULL))
但是因为这里是!=,所以不符合条件,所以不会打印
execl("/bin/ls","ls","-l",NULL);
后,下面的语句不会在执行
父进程会执行if(childpid!=wait(NULL))
但是因为这里是!=,所以不符合条件,所以不会打印