首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >launchd: Mach服务查找失败

launchd: Mach服务查找失败
EN

Stack Overflow用户
提问于 2012-01-12 20:10:57
回答 1查看 1.2K关注 0票数 2

通过启动获得根权限的帮助器工具无法建立到我的主程序的NSConnection。

当我使用sudo手动启动HelperTool时,连接可以正常工作,这证明我的服务得到了很好的维护,并且问题来自于启动。

日志为:

代码语言:javascript
复制
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?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2012-01-13 01:39:51

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

您也许能够从LaunchDaemon提供连接并从主程序进行连接(因为会话名称空间继承自全局名称空间),但切换到完全不同的机制可能会更好。扮演奎因的“爱斯基摩人!”在this message中指出,在安全域之间使用分布式对象(如用户程序和作为根用户运行的守护进程)会使正确的输入验证变得非常困难,因此可能会导致安全错误。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/8834864

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档