답변:
Popen.communicatereturncode완료되면 속성 을 설정합니다 (*). 관련 문서 섹션은 다음과 같습니다.
Popen.returncode
The child return code, set by poll() and wait() (and indirectly by communicate()).
A None value indicates that the process hasn’t terminated yet.
A negative value -N indicates that the child was terminated by signal N (Unix only).
그래서 당신은 할 수 있습니다 (테스트하지는 않았지만 작동해야합니다).
import subprocess as sp
child = sp.Popen(openRTSP + opts.split(), stdout=sp.PIPE)
streamdata = child.communicate()[0]
rc = child.returncode
(*) 이것은 구현 방식으로 인해 발생합니다. 자식 스트림을 읽기 위해 스레드를 설정 한 후을 호출합니다 wait.
from subprocess import Popen한 다음 Popen대신에 subprocess(or sp).Popen가독성을 높이고 줄을 단축시키는 대신 사용할 수 있습니다
process.communicate()한 다음 할당 해야합니다 returncode. 호출하기 전에 할당이 완료 communicate되면입니다 None.
.poll() 리턴 코드를 업데이트합니다.
시험
child = sp.Popen(openRTSP + opts.split(), stdout=sp.PIPE)
returnCode = child.poll()
또한 after .poll()를 호출하면 객체에서로 코드를 사용할 수 있습니다 child.returncode.
exitcode = data.wait(). 하위 프로세스가 표준 출력 / 오류에 쓰거나 표준 입력에서 읽거나 피어가없는 경우 차단됩니다.