2012-10-29 2 views
0

python bugsubprocess을 호출하는 문제를 해결하려고합니다. 나는가는 방법이 os.waitpid과 조합하여 os.system를 사용하고있는 것이라고 상상했다. 이를 테스트하기 위해 아래 코드를 작성했습니다. system_call_test.pypid과 많은 텍스트를 f 파일에 씁니다. 그러나 os.waitpid()을 호출하면 항상이 오류가 발생합니다 : OSError: [Errno 10] No child processes. 따라서이 구조가 제대로 작동하는지 확인하기가 힘듭니다. 스크립트가 다른 스크립트의 종료를 기다리는 것을 어떻게 확인할 수 있습니까? Windows XP/python 2.7입니다.os.waitpid가 pid를 포함하는 튜플을 반환하지 않고 종료 상태

import os 
f = r'D:\temp\called.txt' 

s = os.system('C:\Python27\python.exe D:\python_spullen\system_call_test.py') 
with open(f, 'r') as f_in: 
    i = f_in.readline()[-4:] 
    print i 
    rr = os.waitpid(int(i),0) 
    print rr 

답변

1

os.systemthe exit code of the process을 반환합니다. 따라서 위의 s은 이미 채워져 있으며 프로세스가 종료되었습니다. os.waitpid에는 대기 할 것이 없습니다.

+0

그래서 종료 코드가 '0'이면 프로세스가 오류없이 종료 되었습니까? – LarsVegas

+0

그럴 경우 예 –

+0

좋습니다, 감사합니다. – LarsVegas

1

system()fork() + exec() + waitpid()입니다. 다시 waitpid()으로 전화하지 마십시오.

관련 문제