2010-05-29 8 views
6

subprocess.call 또는 subprocess.Popen을 사용하면 셸 명령을 실행하면 셸 창이 빠르게 나타나고 사라집니다.셸 창없이 셸 명령 실행

쉘 창을 사용하지 않고 어떻게 쉘 명령을 실행할 수 있습니까?

+1

어떤 플랫폼입니까? (Windows처럼 들립니다.) –

+0

관련 : [os.system() 또는 subprocess.call()을 사용하면 콘솔을 숨기는 방법?] (http://stackoverflow.com/q/7006238/4279) – jfs

답변

23

당신의 관찰이 Windows에만 국한된다고 생각합니다. 그 생각은 "콘솔 플래시"문제를 일으킬 유일한 플랫폼입니다.

STARTUPINFO 및 creationflags, 주어진 경우, CreateProcess를() 함수의 기초가되는 에 전달됩니다 : 그렇다면, 다음 docs는 다음과 같은 반 도움이 단락을 제공합니다. 새 프로세스에 대해 주 창 모양 및 우선 순위 등을 지정할 수 있습니다. (윈도우 만 해당)

불행하게도 파이썬의 온라인 문서는 Windows API 문서의 관련 부분을 재생하지 못하는, 그래서 당신은 다른 곳, 예를 사람들을 찾을 수 있습니다 MSDN에 here을 시작 creationflags 당신에게 here 리드, 특히에

CREATE_NO_WINDOW 
0x08000000 

과정은 콘솔 창없이 실행되고있는 콘솔 응용 프로그램 이다. 따라서 응용 프로그램에 대한 콘솔 핸들 이 설정되어 있지 않습니다.

그래서, 당신의 Popen 전화에 creationflags=0x08000000를 추가하는 것이 도움이 될 것입니다 (불행하게도 나는 당신이 그것을 자신을 시도 할 것이다, 그래서이 밖으로 시도에는 윈도우 실행 시스템이 없습니다).

+0

에 감사드립니다. 빠른 답변! –

+0

Windows 컴퓨터에서 확인되었습니다. 고맙습니다! –

+0

매우 훌륭합니다. – ChristopheD