我一直在阅读有关流水线的内容,也阅读了这个主题 - How to send a simple string between two programs using pipes?
我阅读了@jschmier 的回答(第一个)- 我想知道它实际上是如何工作的? 程序 writer.c 和 reader.c 必须同时运行吗?如果他们这样做了,reader.c 如何“通知”writer.c 已经发送了一个字符串?
这些问题大多是理论性的,但我真的很想知道流水线是如何工作的。 谢谢你的提醒。
最佳答案
Do the programs writer.c and reader.c have to run simultaneously ?
他们有。
If they does , how reader.c is "informed" that writer.c has sent a string?
两个程序都打开一个特殊的管道
设备:"/tmp/myfifo
。一个打开用于读取,另一个用于写入。内核负责在它们之间传输数据.
请注意,管道实际上需要并发读取和写入,因为内部缓冲区非常小,并且在没有一个事件的情况下会阻塞另一个事件。
它是如何工作的:如果为了简化,数据写入管道从进程空间进入内核并进入阅读器进程。通常开发人员尝试使用非阻塞调用,因为在一个进程繁忙的情况下阻塞程序执行是 Not Acceptable 。
有关管道的更多信息,您可以阅读有关该主题的 Linux 文档:http://linux.die.net/man/7/pipe
关于c - 流水线 - 在两个程序之间发送字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16065014/