launchd NetworkState, когда нет сетевого подключения - PullRequest
3 голосов
/ 27 апреля 2011

Кто-нибудь знаком с launchd в Mac OS X, особенно с ключом NetworkState (bool) в разделе KeepAlive файла .plist?

На страницах man,launchd должен вызывать исполняемый файл, когда на Mac нет сетевого подключения, когда plist настроен следующим образом:

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

Кажется, это работает нормально, однако, если установлено действительное сетевое соединение (определяется как Mac, имеющий по крайней мере один IPv4 / 6-адрес без обратной связи, launchd должен прекратить вызывать исполняемый файл (поскольку флаг NetworkState должен предотвращать его).

Я наблюдаю за тем, что launchd продолжает вызывать мою программу независимо от сетевого подключения Mac!Это как если бы launchd полностью игнорировал флаг NetworkState.

Кто-нибудь знает, как заставить это работать, так что launchd будет вызывать программу только при отсутствии сетевого подключения, и остановка вызывать его после установления сетевого подключения?

1 Ответ

6 голосов
/ 03 августа 2012

Я некоторое время пытался решить эту же проблему, и сегодня я наконец-то осознал свое недоразумение.

Если какое-либо из условий KeepAlive оценивается как истинное, это означает «убедитесь, что этот процесс запущен». Когда ни один из них не принимает значение true, это означает, что « не не гарантирует, что этот процесс запущен», а не, как я надеялся, «убедиться, что этот процесс не запущен».

...