繁体   English   中英

在现代 Linux(即 ver>=3.0.0)上,是否有更简单的方法在不相关的进程之间共享文件描述符?

[英]Is there an easier way to share file descriptors between unrelated processes on modern day Linux (i.e., ver>=3.0.0)?

与使用sendmsg()系统调用通过 UNIX 域套接字发送它(类型设置为SCM_RIGHTS的消息sendmsg()相比,Linux 是否提供了一种更好的方式将 fd 从一个进程发送到另一个进程以进行共享? 我想最好的可能性是能够以某种方式命名一个 fd,然后在一个不相关的过程中(按名称)打开它,但我对其他选择持开放态度。

我问这个问题的原因是能够在没有父子关系的进程之间使用 *fd() 函数(例如, eventfd()timerfd()signalfd()等...),使其成为共享文件描述符要困难得多。

这个例子 - 基于libancillary - 显示了如何在不相关的prcoesses之间传递eventfd。 请参阅evclient.c和evserver.c代码。

https://github.com/mhaberler/libancillary

https://www.normalesup.org/~george/comp/libancillary/ 上有一个库可以为您执行此操作,该库通过复制到它们的树中在许多项目中使用,但主要的 git 主机不再存在.

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM