首页 文章

使用Launch Daemon中的GUI启动User App

提问于
浏览
1

我有一个在用户上下文之外以root身份运行的Launch Daemon . 此守护程序始终运行并监视服务器 . 有时,我的守护进程将从服务器获取命令,告诉它向用户显示某些内容 . 显然,我无法从启动守护进程执行此操作,因为它不在“WindowsServer”环境中运行 - 因此另一个选项是为每个有权能够显示GUI的用户生成单独的进程 .

我有一个选择是制作一个启动代理并让操作系统为我启动它 . 然后,启动代理可以与启动守护程序通信,以确定何时需要显示某些内容 .

问题是这样的:服务器有时会提供实际二进制文件的更新 . 因此服务器会向Launch Daemon发送一系列文件,这些文件应该在现有文件的基础上复制出来 . 如果我正在运行启动代理,我该如何关闭它以便可以更新代理本身?同样,如何在更新完成后重新启动代理?

1 回答

  • 0

    关闭袖口,我会说你应该为你的守护进程安排一种方式来请求发射代理按需退出,就像你安排它按需启动一样 . 一旦您知道代理已退出,您的守护程序就可以继续进行更新 .

    请注意,您的代理可能不应该永远存在,并且绝对不应该轮询守护进程来进行工作 . 相反,您应该进行装配,以便在守护程序尝试连接到代理程序时,launchd启动代理程序 . 例如,您可以通过让守护程序连接到代表代理程序注册的Unix域套接字来执行此操作 .

    您可能会更好地了解Google的UpdateEngine如何处理软件更新 . 我相信它也有一个启动守护进程执行应用程序更新 . 由于这已经在许多计算机上运行,因此其软件更新问题的解决方案是经过验证的 . (Sparkle's解决方案也经过了彻底的验证,但它依赖于您似乎想要避免的用户交互 . )

相关问题