没有网络连接时启动NetworkState

Eri*_*ker 3 macos launchd keep-alive plist network-state

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

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

...
<key>KeepAlive</key>
<dict>
    <key>NetworkState</key>
    <false/>
</dict>
...
Run Code Online (Sandbox Code Playgroud)

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

不过,我看到的行为是,无论 Mac的网络连接如何,都会launchd一直调用我的程序!这好像完全无视旗帜.launchdNetworkState

有没有人知道如何使这项工作launchd只在没有网络连接时调用程序,并在建立网络连接后停止调用它?

Nic*_*ski 6

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

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