我正在比较 Mac OS X 上可用的不同 IPC 机制(管道、套接字、System V IPC 等),我想看看 Mach 端口与更高级别的替代方案相比如何。但是,我遇到了一个非常基本的问题:跨进程(特别是跨父进程和子进程)获得对端口的发送权限。
与文件描述符不同,端口通常不会转移到派生进程。这意味着必须建立一些其他的传输方式。我能找到的关于这个的唯一相关页面就是这个,他们在更新中声明他们的方法不再有效并且永远不能保证,即使该方法是由苹果工程师在 2009 年提出的。(这意味着替换引导端口,现在这样做会破坏 XPC。)他们建议的替换使用不推荐使用的函数,因此这不是一个非常吸引人的解决方案。
此外,我喜欢旧解决方案的一件事是端口在使用它的进程之间仍然非常私密。不需要广播端口的存在,就像管道(来自pipe
调用)一旦分叉就可以工作。(如果有其他解决方案,我可能会接受它,但这有点烦人。)
那么,如何将发送权从父进程传递到 Mach 端口到子进程?