如何确保我的工作是通过launchd而不是直接启动的?

时间:2015-04-16 11:24:16

标签: macos daemon launchd launchctl

我有一个程序,我想确保它只由launchd(作为一个守护进程)和&如果用户直接启动它,它应该终止(双击Finder,终端)。有没有一种很好的方法来实现这个目标?

1 个答案:

答案 0 :(得分:1)

假设您是设置启动plist的人,指定如何启动您的程序,您可以使用您自己的密钥(例如“I_CAME_FROM_LAUNCHD”)向该plist添加EnvironmentVariables条目,然后让您的程序使用getenv(或NSProcessInfo,对于Objective-C)检查是否存在该环境变量。如果程序从Finder启动,该变量将不存在,您可以终止程序。