类似于“mkfifo”创建的命名管道,但具有双向功能。

7

我想创建一个命名管道,就像“mkfifo”创建的那样,但有一个注意事项。我希望这个管道是双向的。也就是说,我希望进程A写入FIFO,进程B从中读取,反之亦然。由“mkfifo”创建的管道允许进程A读取其写入管道的数据。通常我会使用两个管道,但我正在尝试模拟实际设备,因此我希望open(),read(),write()等的语义尽可能类似于实际设备。有人知道一种技术可以在不诉诸两个管道或命名套接字的情况下实现这一点吗?

2个回答

6
或者使用“伪终端接口”(pty)。请参考man pty

4
一个pty通常会带着一堆你不想要的东西,比如终端纪律处理。但是提及这一点可以算是打破常规的思考方式。 - Jonathan Leffler

5

使用Unix域套接字。

哦,你说你不想使用唯一可用的解决方案 - Unix域套接字。

在这种情况下,你只能打开两个命名管道,或者不使用。当然,你也可以为它们编写自己的设备驱动程序 - 你可以在开源系统中这样做;对于闭源系统(Windows、AIX、HP-UX),可能会更难。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接