在Mac OS X上熟悉launchd
的任何人,特别是NetworkState
文件的bool
部分中的KeepAlive
(.plist
)键?
在man
页面上,launchd
应该在Mac上没有网络连接时调用可执行文件,当plist配置如下:
...
<key>KeepAlive</key>
<dict>
<key>NetworkState</key>
<false/>
</dict>
...
这似乎没问题,但是,一旦建立了有效的网络连接(定义为具有至少一个非环回IPv4 / 6地址的Mac),launchd
应该停止调用可执行文件(因为NetworkState
标志应该阻止它)。
我看到的行为是,launchd
不断调用我的程序,而不管Mac的网络连接是否!好像launchd
完全忽略NetworkState
标志。
有没有人知道如何使这项工作成为launchd
只会在没有网络连接时调用程序,停止在建立网络连接后调用它?
答案 0 :(得分:5)
我一直试图解决同样的问题,今天我终于意识到了我的误解。
当任何KeepAlive的条件评估为true时,这意味着“确保此进程正在运行”。当它们都没有评估为true时,这意味着“不确保此进程正在运行”,而不是像我希望的那样,“确保此进程不正在运行。”