我正在构建一个10.8+的应用程序,其中包括修补文件。由于这个功能,我创建了一个“PrivilegedHelperTool”并且安装为KeepLive = YES RunAtLoad = YES(所以它始终运行)。我也使用XPC通过一个GUI应用程序(菜单)山狮特权助手守护进程状态
我想能够检查是否安装了“PrivilegedHelperTool”,并且正在运行并且迄今为止检查安装的最佳方法发现是在/ Library/LaunchDaemons /中查找plist,并检查二进制文件是在/ Library/PrivilegedHelperTools中。
这真的是最好的方法吗?
而且我没有发现任何可靠的方法来检查,如果没有PrivilegedHelperTool已经是根(如须藤launchctl列表)
我添加了使用launch.h的包装(如根运行)(/ usr/include目录/launch.h)http://brockerhoff.net/blog/2009/02/02/cocoa-musings-pt-3/ 但它只返回用户进程并让最终用户升级权限只是为了检查一些“插件”正在运行似乎是错误的。
确实,我能希望得到的最好的结果是试图与我的服务商谈,如果它没有响应,就认为它“已经损坏或没有运行”? (http://mac-os-forge.2317878.n4.nabble.com/Programmatic-interface-to-launchctl-and-some-other-questions-OS-X-10-5-tp189494p189496.html)
从苹果在这里跟进 https://devforums.apple.com/message/731960#731960 – drunknbass
这可能不是最好的解决方案,但我能想到的最简单。既然你已经有消息,为什么不使用那个?你发送守护进程消息,守护进程返回你需要的信息(uid_t,无论什么)。如果它没有运行,守护进程将不会有回复。另外,如果你不想依赖消息传递来知道它是否正在运行,也许ps的源代码可能会帮助你。 – YllierDev
编号喜欢有更好的粮食控制比“释放载体pidgin,并希望它返回”。 守护进程可能无法运行(不太可能) 守护程序可能运行,但删除(也许边缘情况?) 等 我宁愿知道守护程序没有运行,并要求须藤启动它与最坏的假设并重新安装它在麻烦的第一个迹象(XPC消息没有响应) – drunknbass