检测是否在launchd下运行

时间:2014-03-12 07:42:24

标签: macos launchd

如何在Mac OS X上的launchd下检测到我作为LaunchAgent运行?

这是一个程序(用Go编写),当被告知需要重新启动时。如果它是从终端或init脚本启动的,它需要自己完成。如果在服务管理器下运行,它不应该尝试重新启动,而只需退出并由管理器重新启动。

例如,在Solaris SMF下运行时,设置了环境变量SMF_FMRI,但我在launchd中看不到任何类似内容。

有明显的解决方法(需要使用命令行标志或设置环境变量)但我对“自动”解决方案感兴趣。

(这不是类似的发声问题How to check if launchd has started the script?

的重复

1 个答案:

答案 0 :(得分:2)

获取您的父进程ID(PPID)并将其与launchd的PID进行比较。

在屏幕抓取中,您可以看到launchd's PID为41840(红色),mdflagwriterdistnotedcfprefsd(蓝色)的PPID与之匹配数字,所以它们是由launchd发起的。

enter image description here