1

Я делаю приложение для киоска для OSX. предыдущая версия этого приложения работала на OSX 10.8, но компьютеры обновились, и теперь приложение не работает должным образом. Мне нужно, чтобы пользователь не мог убить процесс. Итак, давайте назовем основное приложение как A. "A" должен иметь возможность запускаться от любого пользователя с правами root, чтобы избежать его уничтожения пользователями. Я использую LaunchAgent для автоматического запуска при входе пользователя. нет проблем с запуском A от имени пользователя root. как Launchctl не может запустить A правильно от имени root. и я не могу запустить A как Демон, потому что он должен быть интерактивным, я использую вторую программу под названием "B", "B" выполняет системный вызов "A" от имени пользователя root, а затем вызывает "exit" чтобы не быть убитым "А", когда "Б" умирает. это работает, если я запускаю B непосредственно из терминала, но когда Launchctl запускает B и он умирает, A тоже умирает. я не знаю, как ее решить, как сохранить "A" в качестве пользователя root, даже когда "B" заканчивается.

вот как Б зовет А:

 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;
}

0