1

我想知道第三方开发人员是否有办法通过 XPC 或 Mach 与启动代理和守护进程进行交互。我的理解是第三方必须知道 XPC 的字典格式或有权访问 Mach 的 .defs 文件。这些是否可用于预安装的启动服务?如果没有,那么还有其他方式可以通过代码与服务交互吗?

4

1 回答 1

2

你的理解是正确的。对于 Mach,.defs 文件用作 Mach 接口生成器 (MIG) 的输入,它创建用于序列化 mach 消息中的参数、调用 mach_msg、等待回复和反序列化回复的 C 代码。XPC 也在幕后使用马赫消息,顺便说一句(尽管苹果真的没有告诉你)。

对于预装的启动服务,Apple 没有显示任何内容。他们确实提供了 launchd 本身的源代码(尽管由于未提供 libxpc.dylib,最新版本无法编译,这不足为奇)。

可以做的是挂钩 mach_msg (或覆盖的 xpc_* 消息函数 - 这可能有点困难,因为大多数是异步的,并且实际消息是由 GCD 线程提供的)。

于 2012-08-30T22:50:23.157 回答