답변:
Popen.communicate
returncode
완료되면 속성 을 설정합니다 (*). 관련 문서 섹션은 다음과 같습니다.
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()
. 하위 프로세스가 표준 출력 / 오류에 쓰거나 표준 입력에서 읽거나 피어가없는 경우 차단됩니다.