gpt4 book ai didi

c - 用于父子信号的 waitpid

转载 作者:塔克拉玛干 更新时间:2023-11-03 01:21:03 29 4
gpt4 key购买 nike

我有一个父进程和一个子进程通过管道进行通信。 parent 写, child 读。而且,一旦 child 读完了,它就会对读过的数据做一些处理。我需要确保父级等到子级完成处理此数据(而不是终止)。

我所需要的只是 parent 和 child 之间的一个简单的等待/信号机制。

我相信parent,在写完之后,可以调用waitpid(child_process_id, &status, flag)。但是我不确定 child 如何发出状态变化的信号,以及 parent 应该等待什么标志。

将不胜感激任何指点!

最佳答案

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

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

关于c - 用于父子信号的 waitpid,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42859578/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com