3

任何熟悉launchdMac OS X 的人,特别是文件部分的NetworkState( bool) 键?KeepAlive.plist

man页面中,launchd当 Mac 上没有网络连接时,当 plist 配置如下时,应该调用可执行文件:

...
<key>KeepAlive</key>
<dict>
    <key>NetworkState</key>
    <false/>
</dict>
...

这似乎可以正常工作,但是,一旦建立了有效的网络连接(定义为 Mac 具有至少一个非环回 IPv4/6 地址),launchd 应该停止调用可执行文件(因为NetworkState标志应该阻止它)。

但是,我看到的行为是,无论Mac 的网络连接如何,都会launchd继续调用我的程序!就好像完全无视国旗一样。launchdNetworkState

有谁知道如何进行这项工作,以便launchd仅在没有网络连接时调用程序,并在建立网络连接后停止调用它?

4

1 回答 1

6

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

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

于 2012-08-02T22:29:14.923 回答