OS X - действительно привилегированный вспомогательный инструмент «по требованию»
Мое приложение должно записывать файлы в ограниченные места в файловой системе.
Для этого я использую вспомогательный инструмент, который запускается от имени пользователя root.
Все работает правильно, следуяэтот пример, мой вспомогательный инструмент правильно установлен и запущен. Я использую это решение, чтобы иметь возможность «разбудить» вспомогательный инструмент, в противном случае он не запускается более одного раза после начальной загрузки.
Вспомогательный инструмент ожидает сообщений от основного приложения и правильно их выполняет. У меня также есть своего рода сообщение с просьбой выключить инструмент, который также работает правильно.
Проблема в том, чтоlaunchd
перезапускать инструмент каждый раз, когда он выходит, независимо от того, какие ключи я указал вlaunchd.plist
файл.
Я не хочу, чтобы вспомогательный инструмент работал вечно, ожидая сообщений, а вместо этого запускался только по требованию.
Вопрос : это нормально, что вспомогательный инструмент перезапускается каждый раз, когда он заканчивается? Если нет, как дать ему умереть и перезапустить по требованию?
Здесьlaunchd.plist
содержание:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>KeepAlive</key>
<dict>
<key>SuccessfulExit</key>
<false/>
</dict>
<key>RunAtLoad</key>
<true/>
<key>Label</key>
<string>com.mycompany.Helper</string>
<key>MachServices</key>
<dict>
<key>com.mycompany.Helper</key>
<true/>
</dict>
</dict>
</plist>
Конечно, я пробовал различные комбинации ключей и значений, а также различные коды состояния выхода для вспомогательного инструмента. Это никак не изменилосьlaunchd
управляет процессом.