Estou fazendo um aplicativo de quiosque para osx. Houve uma versão anterior deste aplicativo trabalhando no OSX 10.8, mas os computadores foram atualizados e agora o aplicativo não está funcionando corretamente. Eu preciso evitar o usuário pode matar o processo. Então, vamos chamar o aplicativo principal como A. "A" deve ser capaz de executar a partir de qualquer usuário como root para evitar ser morto pelos usuários. Eu estou usando um LaunchAgent para iniciá-lo automaticamente quando o login do usuário. não há problema em executar A como root. como Launchctl não pode executar A propertly como root. e eu não posso executar um como um Daemon porque ele precisa ser interativo, estou usando um segundo programa chamado "B", "B" faz uma chamada de sistema para "A" como um usuário root e então chama "exit" evitar que "A" seja morto quando "B" morrer. Isso funciona se eu executar B diretamente do terminal, mas quando o Launchctl executa B e ele morre, A morre também. Eu não sei como resolvê-lo, como manter o "A" rodando como root mesmo quando o "B" termina.
é assim que B está chamando A:
int main(int argc, const char * argv[])
{
system("sudo /Path/to/A & exit;");
}
system("sleep 15"); // trick that tell launchctl that everything was ok
return 0;
}