【发布时间】:2013-03-21 08:05:00
【问题描述】:
我正在比较 Mac OS X 上可用的不同 IPC 机制(管道、套接字、System V IPC 等),我想看看 Mach 端口与更高级别的替代方案相比如何。但是,我遇到了一个非常基本的问题:跨进程(特别是跨父进程和子进程)获取端口的发送权限。
与文件描述符不同,ports are generally not carried over to forked processes。这意味着必须建立一些其他的传输方式。我能找到的唯一相关页面是this one,他们在更新中声明他们的方法不再有效并且永远不能保证,即使该方法是suggested by an Apple engineer in 2009。 (这意味着替换引导端口,现在这样做会破坏 XPC。)他们建议的替换使用不推荐使用的函数,所以这不是一个非常吸引人的解决方案。
此外,我喜欢旧解决方案的一件事是,端口在使用它的进程之间仍然非常私密。不需要广播端口的存在,就像管道(来自pipe 调用)一旦分叉就可以工作。 (如果有其他解决方案,我可能会接受它,但这有点烦人。)
那么,如何将发送权从父进程传递到 Mach 端口到子进程?
【问题讨论】: