OS X - Ferramenta Auxiliar Privilegiada Verdadeiramente 'On Demand'
Meu aplicativo precisa gravar arquivos em locais restritos no sistema de arquivos.
Para fazer isso, eu uso uma ferramenta auxiliar que é executada como raiz.
Tudo está funcionando corretamente, seguindoeste exemplo, minha ferramenta auxiliar está instalada e executada corretamente. Eu uso essa solução para poder "ativar" a ferramenta auxiliar, caso contrário ela não será lançada mais de uma vez após o carregamento inicial.
A ferramenta auxiliar aguarda a chegada de mensagens do aplicativo principal e as executa corretamente. Também tenho um tipo de mensagem que solicita o desligamento da ferramenta, que também funciona corretamente.
O problema é quelaunchd
reinicie a ferramenta sempre que for encerrada, independentemente das chaves especificadas nolaunchd.plist
Arquivo.
Não quero que a ferramenta auxiliar funcione para sempre, aguardando mensagens, mas inicie apenas sob demanda.
Pergunta, questão : é normal que a ferramenta auxiliar seja reiniciada toda vez que termina? Se não, como deixá-lo morrer e reiniciar sob demanda?
Aqui está olaunchd.plist
conteúdo:
<?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>
Obviamente, tentei várias combinações de chaves e valores e também vários códigos de status de saída para a ferramenta auxiliar. Não mudou de forma algumalaunchd
gerencia o processo.