【发布时间】:2012-08-29 15:53:25
【问题描述】:
我想知道第三方开发人员是否可以通过 XPC 或 Mach 与启动代理和守护程序进行交互。我的理解是第三方必须知道 XPC 的字典格式或访问 Mach 的 .defs 文件。这些是否可用于预安装的启动服务?如果没有,那么还有其他方式可以通过代码与服务交互吗?
【问题讨论】:
标签: objective-c c macos mach xpc
我想知道第三方开发人员是否可以通过 XPC 或 Mach 与启动代理和守护程序进行交互。我的理解是第三方必须知道 XPC 的字典格式或访问 Mach 的 .defs 文件。这些是否可用于预安装的启动服务?如果没有,那么还有其他方式可以通过代码与服务交互吗?
【问题讨论】:
标签: objective-c c macos mach xpc
你的理解是正确的。对于 Mach,.defs 文件用作 Mach 接口生成器 (MIG) 的输入,它创建用于序列化 mach 消息中的参数、调用 mach_msg、等待回复和反序列化回复的 C 代码。 XPC 还在幕后使用 mach 消息,顺便说一句(尽管 Apple 真的没有告诉你)。
Apple 不会为预安装的启动服务显示任何内容。他们确实提供了 launchd 本身的源代码(尽管由于未提供 libxpc.dylib,最新版本无法编译,这不足为奇)。
您可以做的是挂钩 mach_msg(或覆盖的 xpc_* 消息函数 - 这可能有点困难,因为大多数是异步的,并且实际消息是由 GCD 线程提供的)。
【讨论】: