2011-04-26 63 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的任何條件評估爲真時,表示「確保此過程正在運行」。當他們都沒有評價爲真時,意思是「不要確保這個過程正在運行,」不是,正如我所希望的那樣,「確保這個過程是而不是運行。」