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这段代码,就可以返回结果,我知道是主进程退出并结束了子进程,那么问题来了,怎么样才能不退出主进程并结束这个子进程呢??
解决问题加分。
展开
 我来答
风若远去何人留
2016-07-07 · 知道合伙人互联网行家
风若远去何人留
知道合伙人互联网行家
采纳数:20412 获赞数:450134
专业C/C++软件开发

向TA提问 私信TA
展开全部
你是想在主进程结束子进程?
比较标准的做法,是主进程发一个命令过去,让子进程自杀
比较暴力的做法,就是主进程直接把子进程kill掉
浙江启扬智能科技有限公司
2023-06-12 广告
Android和ARM、Linux之间存在密切的联系。Android是一种基于Linux内核的嵌入式智能操作系统,它采用了ARM处理器作为其主要处理器架构。Android的内核和许多应用程序都是基于ARM架构编写的,包括处理器和内存管理器。... 点击进入详情页
本回答由浙江启扬智能科技有限公司提供
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式