如何在Mac OS X上的launchd下检测到我作为LaunchAgent运行?
这是一个程序(用Go编写),当被告知需要重新启动时。如果它是从终端或init脚本启动的,它需要自己完成。如果在服务管理器下运行,它不应该尝试重新启动,而只需退出并由管理器重新启动。
例如,在Solaris SMF下运行时,设置了环境变量SMF_FMRI
,但我在launchd中看不到任何类似内容。
有明显的解决方法(需要使用命令行标志或设置环境变量)但我对“自动”解决方案感兴趣。
(这不是类似的发声问题How to check if launchd has started the script?)
的重复答案 0 :(得分:2)
获取您的父进程ID(PPID)并将其与launchd的PID进行比较。
在屏幕抓取中,您可以看到launchd's
PID为41840(红色),mdflagwriter
,distnoted
和cfprefsd
(蓝色)的PPID与之匹配数字,所以它们是由launchd
发起的。