任何熟悉 Mac OS X 上的 launchd
的人,特别是 KeepAlive
部分中的 NetworkState
(bool
) 键.plist
文件?
在 man
页面中,launchd
应该在 Mac 上没有网络连接时调用可执行文件,当 plist 配置如下时:
...
<key>KeepAlive</key>
<dict>
<key>NetworkState</key>
<false/>
</dict>
...
这似乎工作正常,但是,一旦建立了有效的网络连接(定义为 Mac 至少具有一个非环回 IPv4/6 地址),launchd
应该 停止调用可执行文件(因为 NetworkState
标志应该阻止它)。
不过,我看到的行为是 launchd
一直调用我的程序,不管 Mac 的网络连接如何!就好像 launchd
完全忽略了 NetworkState
标志。
有谁知道如何让 launchd
仅在没有网络连接时调用程序,并在建立网络连接后停止调用它?
最佳答案
一段时间以来,我一直在努力解决同样的问题,今天我终于意识到自己的误解。
当 KeepAlive 的任何条件评估为真时,这意味着“确保此进程正在运行”。如果它们的计算结果都不为真,则意味着“不确保此进程正在运行”,而不是像我希望的那样“确保此进程不正在运行”。
关于macos - 没有网络连接时启动 NetworkState,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5797152/