2011-08-31 2 views
6

Windows 7에서 Python 2.6을 사용하고 있습니다. CherryPy 웹 서버 (버전 3.1.2)를 실행하기 위해 Python을 호출하는 Windows .cmd 파일이 있습니다. Windows CMD 셸 프롬프트에서이 .cmd 파일을 실행하여이 .cmd 파일을 시작합니다. CherryPy가 종속 파일 중 하나가 변경되었음을 감지하면 다시 시작합니다. 이 CherryPy 자체를 다시 시작하기 위해 사용하는 호출이콘솔에서 분리하지 않고 Windows의 Python에서 os.execv()를 수행하는 방법은 무엇입니까?

os.execv(sys.executable, args) 

을하기 때문에 Windows에서이 구성에서 발생하는 몇 가지 문제는,하지만 당신은 .cmd 파일에 파이썬이 실행 호출 할 수 없습니다. 나는 다양한 파이썬 체조를 통해 그 문제를 우회하기 위해 관리했습니다, 지금은 그것 (본질적으로)

os.execv(sys.argv[0], args) 

를 호출하지만 다시 시작한 프로세스가 키보드에서 분리하여 다시 시작되었다했습니다; 그것은 Ctrl-C를 잡을 것이며, 그때

Terminate batch job (Y/N)? 

부탁 해요하지만 Y 또는 NI 유형이 종료 .cmd 파일로되지 걸려 있지만, 윈도우 CMD 셸에 의해, 그리고

'Y' is not recognized as an internal or external command, operable program or batch file. 
를 응답

그래서 유닉스에서 "포 그라운드"라고 부르는 것에 재시작 된 프로세스를 유지하기 위해 Windows에서 어떻게 설정합니까?

당신이

import subprocess 

retcode = subprocess.call(["ls", "-l"]) 

가 서브 프로세스 클래스에 대한 자세한 내용은이 링크를 참조 예제처럼 subprocess.call 방법을 사용할 수 있습니다

+0

이 질문을 [링크] (HTTP : // 유래 .com/questions/7004687/os-exec-on-windows)은이 질문의 간단한 버전입니다. 그 질문에 대한 대답은이 질문에 대한 대답으로 간주 될 것이지만 만족스럽게 대답하지 못했습니다. –

+0

그 질문에 대한 새로운 코멘트를보십시오. –

답변