2013-01-18 1 views
0

MAC OSX objective C 애플리케이션이 쉘 스크립트를 실행하기 위해 관리자 권한으로 NSAppleScript를 사용하는 first.app을 말합니다.이 스크립트는 다른 Objective C 응용 프로그램이 second.app라고 말합니다.커맨드 라인에서 MAC OSX objective C opplication을 시작하는 다른 방법들

셸 스크립트에서 열기 명령 예 : "open second.app"를 사용하면 올바르게 작동합니다.

그러나 쉘 스크립트에서 바이너리 Ex : "/second.app/Contents/MacOS/second"를 호출하여 second.app를 실행하면 second.app이 될 때까지 컨트롤이 first.app로 돌아 오지 않습니다 닫는다. 두 번째 앱을 닫으면 first.app가 다시 시작됩니다.

open 명령에서 응용 프로그램을 시작하고 언급 한대로 응용 프로그램 바이너리를 직접 호출하는 차이점은 무엇입니까?

open Second.app 

를 호출

답변

0

더블 클릭 Finder에서 응용 프로그램의 아이콘과 동일합니다. LaunchServices를 통해 응용 프로그램이 시작되고 open 명령이 즉시 반환됩니다. 호출

/path/to/Second.app/Contents/MacOS/Second 

은 (LaunchServices없이) 직접 응용 프로그램을 시작하고 응용 프로그램이 종료 한 경우에만 반환합니다.

+0

감사합니다. 정말로 도움이됩니다. 바이너리를 직접 실행하면서 backgroung 명령 "/path/to/Second.app/Contents/MacOS/Second 2> & 1 &"에서 실행할 수 있습니다. 이 경우 스크립트가 종료됩니다. 그러나 여전히 first.app는 재개하지 않았습니다. 그 이유를 알고 있습니까? NSAppleScript는 백그라운드에서 실행중인 애플리케이션을 기다리고 있습니까? – user12345

+0

@ user1336309 : 죄송합니다. 잘 모르겠습니다. 'nohup /path/to/Second.app/Contents/MacOS/Second>/dev/null 2> & 1'을 시도해보십시오. 아마 도움이 될 것입니다. –

+0

nohup이 표준 출력을 해당 파일로 재 지정합니다. 도움이되지 않았어. 다시 고마워. – user12345

관련 문제