2011-04-26 89 views
3

任何熟悉launchd,特别是NetworkStatebool)在.plist文件的KeepAlive部分关键?的launchd NetworkState在Mac OS X上没有网络连接

man页面,launchd应该叫一个可执行文件时出现在Mac,当的plist配置这样在没有网络连接:

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

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

虽然我看到的行为是launchd一直呼叫我的程序而不管 Mac的网络连接!这就好像launchd完全忽略NetworkState标志。

有谁知道如何使这项工作,让launchd只会调用程序时,有没有网络连接,并停止称这是一次网络连接是否成立?

+0

真的吗?没有? Tumbleweed的?没有其他人试图做这样的事吗? – 2011-06-21 20:25:52

+0

你并不孤单。我一直在玩这个游戏,并且无法按预期工作。这里似乎没有太多东西,但取决于你想要做什么,看看(http://tech.inhelsinki.nl/locationchanger/)。该plist监视目录以检测网络更改。那里可能有帮助。 – 2011-08-11 19:07:09

回答

5

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

当KeepAlive的任何条件评估为真时,表示“确保此过程正在运行”。当他们都没有评价为真时,意思是“不要确保这个过程正在运行,”不是,正如我所希望的那样,“确保这个过程是而不是运行。”