2014-07-17 5 views
1

사용자 로그인 또는 시스템 부팅시 프로그램을 시작하는 방법을 찾고 있습니다. 프로그램은 루트 권한이 있어야하며 최상위 메뉴 모음에 UI를 표시해야합니다.root로 OSX 데몬이나 에이전트에서 UI를 시작하는 방법

launchd를 사용하여 데몬 및 에이전트로 시작하려고했습니다. 문제는 데몬이 UI를 가질 수 없다는 것입니다. 에이전트는 사용자 권한으로 실행되므로 루트 권한이 없습니다.

또한 setsid()를 사용하여 스크립트를 호출하여 데몬이 다른 프로그램 그룹에서 실행되고 있지만 도움이되지 않는 프로그램을 호출하려고 시도했습니다. 그것은 단지 UI 물건을 보여줄 수 없다.

저는 OSX을 처음 사용하며 이에 대한 도움이 필요합니다.

+2

데몬이 권한있는 작업을 수행하고 에이전트가 GUI를 수행하게하십시오. 그런 다음 에이전트가 표시 할 데이터에 대한 데몬을 쿼리하게하십시오. – LCC

답변

1

올바르게 식별 했으므로 데몬은 UI를 표시 할 수 없습니다. 필요한 것은 필요한 UI를 제공하기 위해 데몬과 통신하는 별도의 프로그램입니다.

다양한 통신 방법이 있습니다. 디자인이 적합한 경우 선호되는 방법은 XPC services을 사용하는 것입니다.이 경우 기본 GUI 응용 프로그램을 만들고 해당 응용 프로그램의 XPC 서비스로 데몬을 만듭니다.

또는 GUI 응용 프로그램이 시작 에이전트 일 수 있으므로 로그인 할 때 실행되며 두 프로세스간에 통신을 제공해야합니다. 같은 UI를 제공하는 데몬 위해서는 어떤 방법을 선택하든 Distributed Notifications, TCP Sockets and Streams 또는

local sockets을 사용하는 등이 작업을 수행하는 여러 가지 방법이있다, 당신은 별도의 프로세스를 사용해야합니다.

+0

안녕하세요, crashreporter "예기치 않은 종료"창을 트리거 할 수없는 루트 백그라운드 프로세스의 동일한 문제를 다루고 있습니다. 예기치 못한 종료를 유발하고 대화 상자를 트리거하는 모든 신호를 처리해야합니까? – Zohar81

+0

@ Zohar81,이 질문의 범위를 벗어나는 다른 질문을 시작하는 것이 좋습니다. – TheDarkKnight

+0

사실 처음에 문제의 원인을 파악하지 못했기 때문에 실제로 그것에 대해 질문을 썼지 만 다르게 표현했습니다. 어쩌면 다음 링크를 살펴 볼 수 있습니다. http://stackoverflow.com/questions/35390122/ trigger-application-quit-unexpectedly-popup-when-os-x-deamon-crashes – Zohar81

관련 문제