【问题标题】:System: job_mig_spawn() can't find its session系统:job_mig_spawn() 找不到它的会话
【发布时间】:2012-06-09 13:11:55
【问题描述】:

我想从特定用户的根进程启动可可应用程序。所以我正在更改我的应用程序的所有者和权限。

如果 s 权限组设置了用户位(对应于 u+s),那么每当有人执行该程序时,该进程就会获得拥有它的人的权限。

sudo chown -R test myApp
sudo chmod u+s /Contents/MacOS/myApp
system([@"open myApp" UTF8String]);  //inside root process
//-rwsr-xr-x  1 test  myApp

错误:

com.apple.launchd[1]: System: Bug: launchd_core_logic.c:8760 (24498):0
com.apple.launchd[1]: System: job_mig_spawn() can't find its session!
open[24459]: spawn_via_launchd() failed, errno=5 label=[0x0-0x274274].
rootProcess[23127]: LSOpenURLsWithRole() failed with error -10810 for the file /Applications/myApp.app/.  

谁能帮帮我?

【问题讨论】:

    标签: objective-c c cocoa unix launchd


    【解决方案1】:

    你应该阅读所有Technical Note TN2083: Daemons and Agents,但特别是,它说:

    我们在 [Apple Developer Technical Support] 中遇到的一个常见问题是“如何从我的守护程序启动 GUI 应用程序?”答案是你不能。

    【讨论】:

    • 但我可以在一个登录用户中启动 GUI 应用程序。
    • 阅读技术说明。它解释了。
    • 来自文档:“守护程序无法启动 GUI 应用程序,因为守护程序在错误的上下文中运行。即使它可以选择在哪个上下文中运行 GUI 应用程序,它会选择哪个? "如果我要为守护进程指定 GUI 上下文?
    • 知道用户名并不足以识别上下文。可能没有上下文。技术说明解释了正确的方法:“这个问题的正确解决方案是将您的程序拆分为多个组件……因此,您可能有一个用于管理全局状态的守护进程和一个代表每个登录用户运行的代理。 ……”
    • 我有监视器(在用户模式下)和守护进程(在 root 中),在监视器中我正在接收 SIGSEGV 信号并将回溯写入文件。我想在 SIGSEGV 之后重新启动监视器。
    猜你喜欢
    • 2019-12-13
    • 2012-03-26
    • 1970-01-01
    • 1970-01-01
    • 2021-11-12
    • 1970-01-01
    • 1970-01-01
    • 2012-01-08
    • 2014-02-28
    相关资源
    最近更新 更多