当应用程序进程启动XPC帮助程序进程时,它实际上并不以经典的UNIX样式执行fork()/ exec()本身.相反,它向launchd发送一条消息,它为它做了肮脏的工作.因此,如果您在XPC进程上查询父进程,它将作为launchd进程返回.
但是,如果在分层流程视图中打开活动监视器,则XPC帮助程序进程将显示在请求它们的原始应用程序下方,例如:

在我正在研究的软件中,了解这些过程之间的关系将非常有用.到目前为止,我们一直在使用常规的BSD父进程信息,但随着一切都向XPC发展,这已经不再使用了.
所以:
有一个kext涉及,所以我很乐意在内核而不是用户空间中直接提取这些信息,但我似乎无法弄清楚它存储在哪里.
更新:关于Apple的darwin-kernel邮件列表的讨论:http://lists.apple.com/archives/darwin-kernel/2015/Mar/msg00001.html
我想 launchd 知道你在寻找什么。
服务管理框架有一种方法可以轻松地为您提供所需的内容。
CFDictionaryRef SMJobCopyDictionary(CFStringRef domain, CFStringRef jobLabel);功能。
| 归档时间: |
|
| 查看次数: |
996 次 |
| 最近记录: |