在不同进程之间传递文件描述符的便携方法

Fra*_*cis 23 unix share fork file-descriptor

在大多数UNIX系统上,可以通过fork()轻松地为子进程/父进程在进程之间传递打开的文件; 但是我需要分享一个fd"之后"孩子已经分叉了.

我发现一些网页告诉我sendmsg()可能适用于仲裁过程; 但这似乎非常依赖操作系统和复杂.该portlisten好像我能找到的最好的例子,但我更喜欢一个良好的包装库的libevent一样,隐藏的kqueue的所有魔法,游泳池,...

有谁知道是否有一些库(和便携式方式)这样做?

Cur*_*son 17

最好的办法是尝试通过Unix域套接字发送文件描述符.这在Stephens和网上的一些地方有所描述,但如果你问得好,我可以为你挖掘代码.

这些日子非常便携; 许多被认为是"非便携"的东西(例如mmap!)现在非常普遍.如果你需要比"现在的大多数系统"更便携,你就会面临很多有趣的问题,但如果你告诉我们更多关于你在做什么以及你正在做什么的平台(可能)也许非Unix POSIX平台?)我们也许可以提供帮助.


Jon*_*ler 11

有一个基于Unix域套接字的机制,用于在进程之间传输文件描述符(例如套接字 - 当然不能进行内存映射) - 使用sendmsg()系统调用.

你可以在史蒂文斯(如Curt Sampson所提到的)以及维基百科中找到更多.

您可以在Linux套接字发送文件描述符的工作代码中找到更新的问题.