我一直在阅读有关流水线操作的内容,并阅读了此主题 - How to send a simple string between two programs using pipes?
我读了@jschmier的答案(第一个) - 我想知道它是如何实际工作的? 程序writer.c和reader.c必须同时运行吗?如果他们这样做,reader.c如何“通知”writer.c已发送字符串?
这些问题是理论上的,但我真的很想知道流水线是如何工作的。 感谢adnvnace。
答案 0 :(得分: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
。一个用于阅读,另一个用于写作。内核负责在它们之间传输数据。
请注意,管道实际上需要并发读写,因为内部缓冲区非常小,没有一个活动会阻塞另一个。
工作原理:如果要简化,写入到管道的数据会从进程空间进入内核并进入 reader 进程。通常开发人员尝试使用非阻塞调用,因为阻止程序执行以防一个进程繁忙是不可接受的。
有关管道的更多信息,您可以阅读有关该主题的Linux文档:http://linux.die.net/man/7/pipe