当应用程序进程启动XPC帮助程序进程时,它实际上并没有以传统的UNIX样式本身进行fork()/exec()本身。相反,它会向启动消息发送一条消息,该消息会为它执行肮脏的工作。因此,如果您在XPC流程中查询父流程,它将作为启动的流程返回。
但是,如果在分层过程 View 中打开“事件监视器”,则XPC帮助程序都显示在请求它们的原始应用程序的下方,例如:
在我正在开发的软件中,了解流程之间的这种关系将非常有用。到目前为止,我们一直在使用常规的BSD父进程信息,但是随着一切朝着XPC迈进,这已不再有用。
所以:
其中涉及一个kext,所以我很乐意直接在内核而不是用户空间中提取此信息,但是我什至无法弄清楚它的存储位置。
更新:关于Apple darwin内核邮件列表的讨论:http://lists.apple.com/archives/darwin-kernel/2015/Mar/msg00001.html
最佳答案
我想这个发布会知道您在寻找什么。
服务管理框架提供了一种可以轻松为您提供所需内容的方法。CFDictionaryRef SMJobCopyDictionary(CFStringRef domain, CFStringRef jobLabel);
函数。