Запускает NetworkState, когда нет сетевого подключения
Любой, кто знаком с 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 ответ
Я пытался решить эту проблему некоторое время, и сегодня я наконец осознал свое недоразумение.
Если какое-либо из условий KeepAlive оценивается как истинное, это означает "убедитесь, что этот процесс запущен". Когда ни один из них не оценивается как true, это означает "не гарантируйте, что этот процесс запущен", а не, как я надеялся, "убедитесь, что этот процесс не запущен".