命名管道类似于"mkfifo"创建,但是双向

mat*_*t_h 7 pipe named-pipes mkfifo

我想创建一个命名管道,就像"mkfifo"创建的那样,但有一点需要注意.我希望管道是双向的.也就是说,我希望进程A写入fifo,进程B进行读取,反之亦然.由"mkfifo"创建的管道允许进程A读取写入管道的数据.通常我会使用两个管道,但我试图模拟一个实际的设备,所以我希望open(),read(),write()等的语义尽可能与实际设备类似.任何人都知道一种技术来实现这一目标而不需要使用两个管道或命名套接字?

lio*_*ori 6

pty(“伪终端接口”)。man pty

  • 一个pty附带了一堆您通常不需要的东西。像所有终端纪律处理一样。但这是开箱即用的想法。 (4认同)

Jon*_*ler 5

使用Unix域套接字.

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

在这种情况下,你会被打开两个命名管道,或者没有.或者为他们编写自己的设备驱动程序 - 当然 - 你可以为开源系统做这件事,无论如何; 对于封闭的源系统(Windows,AIX,HP-UX)来说可能更难.