C Piplining-在两个程序之间发送字符串

C Piplining-在两个程序之间发送字符串,c,pipe,C,Pipe,我一直在读关于管道的书,也读了这个主题- 我读了@jschmier-answer(第一个)-我想知道它实际上是如何工作的? writer.c和reader.c程序必须同时运行吗?如果有,如何“通知”reader.c writer.c已发送字符串 这些问题大多是理论性的,但我真的很想知道管道是如何工作的。 谢谢你的支持 Do the programs writer.c and reader.c have to run simultaneously ? 是的 If they does , how

我一直在读关于管道的书,也读了这个主题-

我读了@jschmier-answer(第一个)-我想知道它实际上是如何工作的? 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
。一个用于读取,另一个用于写入。内核负责在它们之间传输数据

请注意,管道实际上需要并发读写,因为内部缓冲区非常小,并且在缺少一个活动时会阻塞另一个活动

工作原理:如果要简化,写入管道的数据将从进程空间进入内核并进入读卡器进程。通常开发人员尝试使用非阻塞调用,因为在一个进程繁忙时阻塞程序执行是不可接受的


有关管道的更多信息,您可以阅读有关以下主题的Linux文档:

谢谢您的回答。我想知道-writer.c文件写入管道后,reader.c文件将收到“警报”“新的数据已经写入了pipleine?再次感谢。是的,它是这样工作的。读卡器将在write写入数据后立即接收数据。与stdio操作一样,没有调用缓冲。