2

我一直在阅读有关流水线的内容并阅读了这个主题 - 如何使用管道在两个程序之间发送简单的字符串?

我读了@jschmier 的答案(第一个)-我想知道它实际上是如何工作的?程序 writer.c 和 reader.c 必须同时运行吗?如果他们这样做了,那么 reader.c 如何“通知” writer.c 发送了一个字符串?

这些问题大多是理论上的,但我真的很想知道流水线是如何工作的。提前致谢。

4

1 回答 1

1
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?

这两个程序都打开一个特殊的pipe设备:"/tmp/myfifo. 一个用于阅读,另一个用于书写。内核负责在它们之间传输数据。

请注意,管道实际上需要并发读写,因为内部缓冲区非常小,并且在没有一个活动的情况下会阻塞另一个活动。

它是如何工作的:如果为了简化,写入管道的数据从进程空间进入内核并进入读取器进程。通常开发人员会尝试使用非阻塞调用,因为在一个进程繁忙的情况下阻塞程序执行是不可接受的。

有关管道的更多信息,您可以阅读有关该主题的 Linux 文档:http: //linux.die.net/man/7/pipe

于 2013-04-17T18:22:11.177 回答