gpt4 book ai didi

objective-c - launchd:Mach 服务查找失败

转载 作者:行者123 更新时间:2023-12-03 16:32:49 27 4
gpt4 key购买 nike

通过 launchd 获得 root 权限的辅助工具无法建立到我的主程序的 NSConnection。

当我使用 sudo 手动启动 HelperTool 时,连接有效,这证明我的服务销售良好,并且问题来自 launchd。

日志是:

12.01.12 12:41:07    Debou[8247]    [CaptureQueue startCaptureQueueThread] Launched NSConnection service Debou-CaptureQueueThread - (** NSConnection 0x100522090 receivePort <NSMachPort: 0x1005511d0> sendPort <NSMachPort: 0x1005511d0> refCount 1 **)
12.01.12 12:41:10 com.apple.launchd[1] System: Looking up service Debou-CaptureQueueThread
12.01.12 12:41:10 com.apple.launchd[1] (com.Debou.PacketTool[8260]) Mach service lookup failed: Debou-CaptureQueueThread

为什么 launchd 无法看到我出售的 NSConnection ?

最佳答案

AIUI 这是由于 Mach 命名空间层次结构造成的。您的主程序将在用户 session 命名空间中注册其 NSConnection,而 LaunchDaemon 在全局上下文中运行,因此它无法查看任何 session 命名空间。请注意,当您使用 sudo 运行帮助程序时,即使它以 root 身份运行,它仍然在 session 上下文中运行。请参阅tn2083 ,特别是“执行上下文”和“守护进程 IPC 建议”部分。

您也许能够从 LaunchDaemon 提供连接并从主程序进行连接(因为 session 命名空间继承自全局命名空间),但最好完全切换到不同的机制。正如奎因《爱斯基摩人!》 this message中指出,在安全域之间使用分布式对象(例如用户程序和以 root 身份运行的守护进程)使得很难进行正确的输入验证,因此可能会导致安全错误。

关于objective-c - launchd:Mach 服务查找失败,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8834864/

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