没有网络连接时启动NetworkState

时间:2011-04-26 22:20:07

标签: macos plist launchd keep-alive network-state

在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只会在没有网络连接时调用程序,停止在建立网络连接后调用它?

1 个答案:

答案 0 :(得分:5)

我一直试图解决同样的问题,今天我终于意识到了我的误解。

当任何KeepAlive的条件评估为true时,这意味着“确保此进程正在运行”。当它们都没有评估为true时,这意味着“确保此进程正在运行”,而不是像我希望的那样,“确保此进程正在运行。”