C中进程间通信中的数据流控制[关闭]

Posted

技术标签:

【中文标题】C中进程间通信中的数据流控制[关闭]【英文标题】:Data flow control in inter-process communication in C [closed] 【发布时间】:2016-02-02 17:24:03 【问题描述】:

我有三个模块(2 个 C 可执行文件 + 1 个 python 脚本)。我需要三个进程——一个父进程,两个子进程。在他们看到文件结束之前,他们都不会停止。他们只是在执行后继续运行。 问题就出现在这里。父进程需要子进程1的输出,子进程2需要父进程的输出。顺序为:子进程 1 输出结果并在下一轮输出前休眠 5 秒-> 父进程将该输出作为输入并输出自己的结果-> 子进程 2 获取其父进程的结果并将最终结果输出到标准输出。这只是一次迭代。这个循环将一次又一次地重复,直到看到文件结束。 我不知道如何让父进程等待子进程1的每次迭代输出并将其转发给子进程2。所以子进程等待父进程。我考虑过 wait(),但这需要子进程 1 停止。但实际上,这三个过程都不​​会在文件结束之前停止。 那么,有没有什么好的机制来实现这个场景呢?

【问题讨论】:

查看pipe(2)的手册页 【参考方案1】:

您需要在进程之间实现管道机制。建议您阅读 pipe()、dup() 的手册页以及链接 here 了解更多信息

【讨论】:

我知道这些。但困扰我的是如何在子进程生成数据后立即通知父进程获取数据。 一旦您写入管道,其他进程将能够读取它,通过使用例如 poll() 轮询管道句柄。

以上是关于C中进程间通信中的数据流控制[关闭]的主要内容,如果未能解决你的问题,请参考以下文章

Linux 进程间通信

请教一个Linux下C语言的进程间的信号问题

Linux C语言高级编程之使用消息队列实现进程间通信!重点内容!!!

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

C#-C 进程间通信

在 C 中的进程间通信中传递结构