2009-07-26 4 views
2

사용자가 상단 표시 줄에서 "종료"를 선택하지 않은 경우 Launchd를 설정하여 내 앱을 다시 시작하는 방법을 궁금합니다. 앱에 어떤 일이 발생할 수 있으며 강제 종료 될 수 있으며 환경 설정이 선택되면 자동으로 다시 실행되기를 원합니다. 나는 여기에 게시하기 전에 그것을 들여다 보았다. Launchd가 이것을 잘 수행 할 것이라고 들었다. 누구든지 그것을 달성하는 방법에 대한 조언이 있습니까?Launchd 종료시 앱 다시 시작

도움 주셔서 감사합니다.

답변

2

프로그램이 실행 중일 때 프로그램이 사용자의 홈 폴더에 .something 파일을 작성하게하십시오. 응용 프로그램이 정상적으로 종료되면 .something 파일을 제거하십시오. 이제 응용 프로그램이 실행 중인지와 .something 파일을 검사해야하는지 여부를 확인하는 작은 스크립트 (AppleScript 또는 쉘 스크립트)를 작성할 수 있습니다. 스크립트는 필요한 경우 앱을 다시 시작할 수 있습니다. launchd를 사용하여 시작할 때 스크립트가 자동으로 실행되도록 예약 할 수 있습니다.

+0

안녕 Diederik : 좋은 아이디어지만, 그것에 대해 하나의 질문이 있습니다. 그 질문은 : 언제 스크립트를 실행해야합니까? 앱이 어떻게 든 닫히는 지 여부를 모니터링하도록 설정할 수 있습니까? – PF1

+0

스크립트가 항상 실행되고 있어야합니다. 스크립트 내에서 너무 많은 CPU를 사용하지 않도록 잠자기 시간 (예 : Unix sleep (10))을 사용해야합니다. Launchd 대신 사용자 로그인 항목에 스크립트를 추가하여 기본 설정이 현재 사용자에게만 영향을 미칠 수 있습니다 (이 방법이 내가 선호하는 방식이어야 함). – diederikh

+0

그 조언 Diederik을 가져 주셔서 감사합니다. 그래서 스크립트가 매 10 초마다 해당 파일을 검사해야한다고 말하고 있습니까? 그런 다음 앱이 열려 있으면 앱을 열려고 시도합니다 (앱이 열린 경우 아무 일도없는 것처럼 보입니다). 그러나 앱이 종료되면 알림을받을 수있는 방법이 있습니까? 이것이 더 쉬울 것처럼 보인다. – PF1

2

KeepAlive의 SuccessfulExit 설정을 사용하면 앱이 정상적으로 종료되지 않은 경우에만 앱을 다시 실행할 수 있습니다. 자세한 내용은 this Mac OS X Hints entry 및/또는 launchd.plist 매뉴얼 페이지를 참조하십시오.

+0

안녕하세요 smorgan : 링크 주셔서 감사합니다. 정말 좋아 보인다! – PF1