Tôi đang làm một ứng dụng kiosk cho osx. đã có phiên bản trước của ứng dụng này hoạt động trên OSX 10.8, nhưng các máy tính đã được cập nhật và bây giờ ứng dụng không hoạt động đúng. Tôi cần phải tránh người dùng có thể giết quá trình. vì vậy, hãy gọi ứng dụng chính là A. "A" sẽ có thể chạy từ bất kỳ người dùng nào dưới quyền root để tránh bị người dùng giết. Tôi đang sử dụng LaunchAgent để tự động khởi chạy khi người dùng đăng nhập. không có vấn đề gì khi chạy A làm root. vì Launchctl không thể chạy A một cách chính xác như root. và tôi không thể chạy A với tư cách là Daemon vì nó cần phải tương tác, tôi đang sử dụng chương trình thứ hai có tên "B", "B" gọi hệ thống đến "A" với tư cách là người dùng root và sau đó gọi "exit" để tránh "A" bị giết khi "B" chết. hoạt động nếu tôi chạy B trực tiếp từ thiết bị đầu cuối, nhưng khi Launchctl chạy B và nó chết, A cũng chết. tôi không biết làm thế nào để giải quyết nó, làm thế nào để giữ "A" chạy như root ngay cả khi "B" kết thúc.
đây là cách B gọi 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;
}