首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >父子信令的waitpid

父子信令的waitpid
EN

Stack Overflow用户
提问于 2017-03-17 22:02:29
回答 1查看 121关注 0票数 1

我有一个父进程和子进程通过管道通信。父写入和子读取。此外,一旦孩子读完了,它就会对已经读取的数据进行一些处理。我需要确保父进程等待,直到子进程完成对此数据的处理(而不是终止)。

我所需要的就是在父进程和子进程之间建立一个简单的等待/信号机制。

我相信parent在完成编写后,可以调用waitpid(child_process_id,&status,flag)。但我不确定子进程如何发出改变状态的信号,以及父进程应该等待什么标志。

将感谢任何指针!

EN

回答 1

Stack Overflow用户

发布于 2017-03-17 22:20:20

您可以使用自定义信号。在这种情况下,子进程使用getppid()获取其父进程,并通过kill向其发送该信号。同时,父进程为特定信号设置一个信号处理程序(通过signal),并使用waitpid进行等待。由于waitpid是可中断的,因此父进程将被通知子进程已完成处理,并且如果子进程因任何原因没有发送信号而死亡,则父进程也将停止等待。

或者,只需设置第二个管道,让父进程读取和子进程写入。父级只是读取它的管道末端。子进程编写一条短消息(OK或DONE)来通知其父进程其处理已完成,并关闭管道。如果父进程收到消息,它就知道处理是正确的,如果管道关闭时没有消息,它就知道出了问题。IMHO,这是更简单的设置。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/42859578

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档