2009-10-15 6 views
4

여러 번 실행하고 매번 다른 인수를 전달해야하는 프로그램이 있습니다.OSX : 앱의 여러 인스턴스 실행 및 명령 행 인수 전달

import sys, os 
from os.path import join 

# This works, but will not launch twice 
os.system('./AppName.app -AppCommandLineArg') 

# This allows launching two instances but without command line arguments 
os.system('open --new --background ./AppName.app') 

# Attempt #1 
os.system('open --new --background ./AppName.app -AppCommandLineArg') 

# Attempt #2 
os.system('open --new --background "./AppName.app -AppCommandLineArg"') 

# Attempt #3 
os.system('open --new --background "./AppName.app/Contents/MacOS/AppName -AppCommandLineArg"') 

내가 '열기'사용하고 있는데 그 이유는 응용 프로그램에 여러 시간을 출시 할 수있을 것입니다 이렇게하려면 나는 다음과 같이 간단한 파이썬 스크립트를 작성했습니다. 올바른 명령을 '사용'하시겠습니까? 이 작업을 수행하는 방법에 대한 제안 사항은 무엇입니까? linux/mac으로 작업하는 것은 나에게 매우 새로운 것이다.

감사합니다.

p0 = subprocess.Popen(['./AppName.app/Contents/MacOS/AppName', '-AppCommandLineArg']) 
p1 = subprocess.Popen(['./AppName.app/Contents/MacOS/AppName', '-AppCommandLineArg']) 

건배 : -

편집 여기에 나를 위해 문제를 해결하는 코드입니다!

+0

중복 : http://stackoverflow.com/questions/1308755/launch-an- app-on-os-x-with-command-line 또한 질문의 여러 부분에 대해서는 답변하지 않지만 도움을 줄 수는 있습니다. http://stackoverflow.com/questions/1081218/ideal-way-to- single-instance-apps-the-mac – psychotik

답변

1

예, open은 Mac OS X에서 응용 프로그램을 시작하는 올바른 방법입니다. 자세한 내용은 man page을 참조하십시오. 내가 지금 맥에없는, 그래서 나는이를 테스트 할 수 없습니다,하지만 난 다음 작동합니다 생각 :

os.system('open -n ./AppName.app --args -AppCommandLineArg') 
+0

open 명령 행 인수를 취하지 않습니다. 옵션/세부 정보는 내 답장의 링크를 참조하십시오. – psychotik

+0

@psychotik : 남자 페이지에 따라 나는 예는 X 10.6 –

+0

내가 그 시도 적어도 OS에,하지에 연결하지만이 오류 메시지가 : 개방 : 알 수없는 옵션'--args ' '- -args '는'open '에 대한 도움말을 인쇄 할 때 플래그로 나타나지 않습니다. 내가 지적한 페이지에 그 깃발이 있다는 것을 알 수 있습니다. 내 터미널에서 '열린'이 그 국기를 어떻게 지원하지 않는지 어떤 생각입니까? – user111343