gpt4 book ai didi

macos - OSX 事件监视器如何将 XPC 任务与其发起程序进程匹配?

转载 作者:行者123 更新时间:2023-12-04 12:58:28 25 4
gpt4 key购买 nike

当应用程序进程启动一个 XPC 辅助进程时,它实际上并没有以经典的 UNIX 风格执行 fork()/exec() 本身。相反,它会向 launchd 发送一条消息,后者会为它做一些肮脏的工作。因此,如果您在 XPC 进程上查询父进程,它会作为 launchd 进程返回。

但是,如果您在分层进程 View 中打开 Activity Monitor,则 XPC 帮助程序进程都显示在请求它们的原始应用程序下方,例如:

Example of XPC helper for Safari showing launchd as parent process

在我正在开发的软件中,了解进程之间的这种关系将非常有用。到目前为止,我们一直在使用常规的 BSD 父进程信息,但是随着一切都转向 XPC,这不再有多大用处。

所以:

  • XPC 进程的“原始”父进程信息存储在哪里?
  • Activity Monitor 如何访问它?

  • 涉及到 kext,所以我很乐意直接在内核而不是用户空间中提取这些信息,但我似乎无法弄清楚它的存储位置。

    更新:关于 Apple 的 darwin-kernel 邮件列表的讨论: http://lists.apple.com/archives/darwin-kernel/2015/Mar/msg00001.html

    最佳答案

    我想 launchd 知道你在找什么。

    服务管理框架有一种方法可以轻松地为您提供所需的内容。
    CFDictionaryRef SMJobCopyDictionary(CFStringRef domain, CFStringRef jobLabel);功能。

    关于macos - OSX 事件监视器如何将 XPC 任务与其发起程序进程匹配?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24260518/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com