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中进程间通信中的数据流控制[关闭]的主要内容,如果未能解决你的问题,请参考以下文章