linux下c编程问题关于进程和exec函数的
直接上代码:intmain(){intp[2];pipe(p);inti;for(i=0;i<2;i++){intpid=fork();if(pid==0&&i==1){...
直接上代码:
int main(){
int p[2];
pipe(p);
int i;
for(i=0;i<2;i++){
int pid=fork();
if(pid==0&&i==1){
close(p[1]);
dup2(p[0],0);
execlp("sort","sort","-n",NULL);
exit(0);
}
else if(pid==0&&i==0){
close(p[0]);
dup2(p[1],1);
execlp("ls","ls",NULL);exit(0);
}
else if(i==1){waitpid(pid,NULL,0);}
}
return 0;
}
这个运行结果就是主进程一直在等待sort子进程的结束,如果我删掉waitpid这段代码,就可以返回结果,我知道是主进程退出并结束了子进程,那么问题来了,怎么样才能不退出主进程并结束这个子进程呢??
解决问题加分。 展开
int main(){
int p[2];
pipe(p);
int i;
for(i=0;i<2;i++){
int pid=fork();
if(pid==0&&i==1){
close(p[1]);
dup2(p[0],0);
execlp("sort","sort","-n",NULL);
exit(0);
}
else if(pid==0&&i==0){
close(p[0]);
dup2(p[1],1);
execlp("ls","ls",NULL);exit(0);
}
else if(i==1){waitpid(pid,NULL,0);}
}
return 0;
}
这个运行结果就是主进程一直在等待sort子进程的结束,如果我删掉waitpid这段代码,就可以返回结果,我知道是主进程退出并结束了子进程,那么问题来了,怎么样才能不退出主进程并结束这个子进程呢??
解决问题加分。 展开
1个回答
浙江启扬智能科技有限公司
2023-06-12 广告
2023-06-12 广告
Android和ARM、Linux之间存在密切的联系。Android是一种基于Linux内核的嵌入式智能操作系统,它采用了ARM处理器作为其主要处理器架构。Android的内核和许多应用程序都是基于ARM架构编写的,包括处理器和内存管理器。...
点击进入详情页
本回答由浙江启扬智能科技有限公司提供
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询