【发布时间】:2019-11-30 15:22:11
【问题描述】:
来自https://pubs.opengroup.org/onlinepubs/9699919799/functions/pipe.html:
可以将数据写入文件描述符 fildes[1] 并从 文件描述符 fildes[0]。读取文件描述符 fildes[0] 应访问写入文件描述符 fildes[1] 的数据 先进先出的原则。未指定 fildes[0] 是否也是 open for writing 以及 fildes[1] 是否也开放阅读。
据我了解,当您像pipe(array) 这样调用管道系统调用时,array[0] 用于读取,array[1] 用于写入。但是,它们可以同时用于读取和写入吗?
我知道我可以创建另一个管道以反向写入/读取,但是可以在同一个管道中完成吗?文档的含义
不确定是否...
【问题讨论】:
-
管道是一种单向通道,尽管我认为可以对自己进行相同的读写过程,但这并不是它的真正用途。如果您想要另一个单向通道,则必须创建第二个管道(或者:您可以使用 UNIX 域套接字,它是一种双向通道,类似于网络连接)。
-
双向管道仅适用于 BSD。如果你想做一个可移植的双向管道,请使用 unix 域socket pair
标签: c