【问题标题】:waitpid for parent-child signalling父子信号的waitpid
【发布时间】:2017-03-17 14:02:29
【问题描述】:

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

我只需要一个简单的父母和孩子之间的等待/信号机制。

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

将不胜感激任何指针!

【问题讨论】:

    标签: c linux embedded-linux


    【解决方案1】:

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

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

    【讨论】:

      猜你喜欢
      • 2021-12-22
      • 2020-11-15
      • 1970-01-01
      • 1970-01-01
      • 2018-03-26
      • 2021-04-27
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多