在Solaris中如何实现匿名管道?

问题描述 投票:1回答:2

我正在尝试理解Unix管道,我找不到有关Solaris匿名管道的任何信息,这些管道是用pipe(2)之类的东西创建的。

据我所知,这个系统调用在内核空间的某处创建了一个缓冲区,并且使用vfs和vnode将读取和写入的链接与文件描述符结束(不确定这部分)。

但是在内核空间中创建的缓冲区是什么?它是如何实现的,与通常的字节数组有什么不同?

unix pipe solaris anonymous-pipes
2个回答
0
投票

最后的答案(如果有人发现这个并且感兴趣的话):在内核空间中创建的这个缓冲区是使用STREAMS实现的:(来源:illumos gate中的fifonode.h,感谢jamieguinan)

     struct msgb    *fn_mp;     /* message waiting to be read */
     struct msgb    *fn_tail;   /* last message to read */

有关struct msgb(STREAMS的一部分)的信息可以在man msgb(9)中读取。


0
投票

考虑使用Solaris门。它们是在Solaris上使用的快速IPC机制。您可以在docs.oracle.com上找到文档,在博客和Illumos-gate https://github.com/illumos/illumos-gate中可以找到许多示例。

© www.soinside.com 2019 - 2024. All rights reserved.