반응형
Python 하위 프로세스 통신 방법을 사용할 때 종료 코드를 얻는 방법은 무엇입니까?
파이썬
subprocess
모듈과
communicate()
메소드를 사용할 때 종료 코드를 어떻게 검색 합니까?관련 코드 :
import subprocess as sp
data = sp.Popen(openRTSP + opts.split(), stdout=sp.PIPE).communicate()[0]
다른 방법으로해야합니까?
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
.
먼저 프로세스 실행이 완료되었고
.wait
메소드를 사용하여 리턴 코드를 읽었는지 확인해야합니다 . 코드가 반환됩니다. 나중에 액세스
.returncode
하려면
Popen
객체 와 같이 저장됩니다 .
. 자식 프로세스가 표준 출력 / 오류에 쓰거나 표준 입력에서 읽거나 피어가없는 경우 차단됩니다.
.poll()
리턴 코드를 업데이트합니다.시험
child = sp.Popen(openRTSP + opts.split(), stdout=sp.PIPE)
returnCode = child.poll()
또한 after
.poll()
를 호출하면 객체에서로 코드를 사용할 수 있습니다
child.returncode
.
이것은 나를 위해 일했습니다. 또한 자식 프로세스가 반환 한 출력을 인쇄합니다
child = subprocess.Popen(serial_scriptcmd, shell=True, stdout=subprocess.PIPE, stderr=subprocess.STDOUT)
retValRunJobsSerialScript = 0
for line in child.stdout.readlines():
child.wait()
print line
retValRunJobsSerialScript= child.returncode
참고 URL :
반응형
'programing' 카테고리의 다른 글
git이 실제로 병합하지 않고 병합이 충돌하는지 알려줄 수 있습니까? (0) | 2020.05.24 |
---|---|
yum 패키지가 설치된 경로 결정하기 (0) | 2020.05.24 |
이력서가 아닌 앱이 다시 시작됨 (0) | 2020.05.24 |
메이븐 스킵 테스트 (0) | 2020.05.23 |
O (nlogn) Algorithm-이진 문자열 내에서 균등 한 간격으로 3 개 찾기 (0) | 2020.05.23 |