我试图了解Unix管道,但是找不到有关Solaris匿名管道的信息,Solaris匿名管道是使用 pipe(2)之类的东西创建的。
据我所知,此系统调用在内核空间中的某个位置创建了一个缓冲区,并使用vfs和vnode(不确定此部分)以文件描述符为链接的读写结束。
但是在内核空间中创建的缓冲区是什么?它是如何实现的,与通常的字节数组有什么区别?
答案 0 :(得分:0)
最终答案(以防万一,如果有人发现并感兴趣):使用STREAMS实现在内核空间中创建的该缓冲区:(来源:illumos门中的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)中阅读。
答案 1 :(得分:0)
考虑使用Solaris门。它们是在整个Solaris上使用的快速IPC机制。您可以在docs.oracle.com上找到文档,并在博客和Illumos门https://github.com/illumos/illumos-gate
中找到许多示例。