Linux c进程只同步信号和消息队列

Posted

技术标签:

【中文标题】Linux c进程只同步信号和消息队列【英文标题】:Linux c process synchronization only signals and message queues 【发布时间】:2017-12-19 08:01:41 【问题描述】:

我正在寻求有关同步 3 个子进程及其父进程的帮助。 我有 3 个子进程,第一个是从文件行读取并通过管道将它们发送到第二个,第二个进程接收它,计算它有多少个字符,然后该数字通过第二个管道发送到第三个进程,第三个进程将其打印到控制台。

现在我必须使用信号和消息队列来处理 SIGTERM、SIGCONT 和 SIGTSTP。场景如下所示: 只有第三个进程对从控制台发送的信号做出反应。 收到后,他“通知”父母。 父母将信号保存到消息队列并“通知”第一个孩子。 第 1 个孩子阅读、保存、通知第 2 个和第 2 个相同的第 3 个。

我已经用 sigaction() siginfo_t 等完成了所有这些,但我不知道如何让进程等待另一个进程。我读到了wait()、waitid()、waitpid(),但它们似乎都只用于子进程。

我需要可以停止进程直到 ID 指定的另一个进程执行某些操作的工具。

【问题讨论】:

【参考方案1】:

我希望我理解了这个问题,但我想你需要这样的东西:Can a child process wait for the parent process to terminate in Linux programming in C?

【讨论】:

我想我需要找出进程是否可以等待他的兄弟进程。我在那里读到 ***.com/questions/14368876/…> 如果 wait() 就不能等待,但也许还有其他工具?

以上是关于Linux c进程只同步信号和消息队列的主要内容,如果未能解决你的问题,请参考以下文章

进程间通信(消息队列, 信号量)

linux进程间的通信(C): 消息队列

Linux Program信号量共享内存和消息队列

详解linux进程间通信-消息队列

8.7 进程间的通讯:管道消息队列共享内存信号量信号Socket

Linux的消息队列有啥缺点?