0

在支持 xpc 的 osx 机器上运行着一堆启动守护进程和代理。要查看它们是否支持 IPC over xpc,我会查找任何 xpc 函数,尤其是 xpc_connection_create。我的理解是,为了与这些进程对话,必须通过 xpc api 制作字典,然后将其传递给广告的 com.* 服务。有没有办法查看字典的参数应该是每个进程,而不是传递随机的东西?

以上逻辑如有错误,欢迎指正。任何建议或评论都是有帮助的,谢谢。

4

2 回答 2

1

XPC 连接用于创建与 XPC 服务的连接,或与另一个发布 mach 服务的进程进行 IPC。

“xpc_connection_create”创建用于向连接的其他对等方发送消息的连接。应该定义通信的协议,因此,通常两个对等点属于同一方。

换句话说,如果您不拥有这些守护程序/代理,并且没有关于与它通信的协议的公共文档(无论是否通过 XPC)。用这些流程进行 IPC 几乎是不可能的。

于 2012-08-28T09:15:25.667 回答
0

上面的答案充其量是不正确的,最坏的情况是错误的。

虽然这两个对等点确实应该由同一方拥有,但事实并非如此。许多 Apple 的守护进程确实通过 XPC 进行通信,唯一的问题是,它们是否可以从沙箱的范围内访问。一个惊人的数字是。几乎没有“几乎不可能”——非常有可能,并且对于除 Apple 文档之外的调试和调整非常有用。

要获取协议,您可以创建一个库来插入 xpc_connection_send_message_[with_reply/syc],然后使用 DYLD_INSERT_LIBRARIES。通过这种方式,您将获得完整的字典转储。

于 2016-07-02T13:23:05.010 回答