오류를 생성하는 실행 가능 바이너리를 실행하려고합니다. 는 popen을 사용하여 바이너리의 실행에 대한 나의 코드 :이이 오류를 발생하도록되어파이썬 하위 프로세스 Popen은 0이 아닌 오류 코드를 반환하지만 오류는 발생하지 않습니다.
p = Popen(cmd, stdout=PIPE, stderr=PIPE, shell=True)
output, error = p.communicate()
return_code = p.returncode
if error:
raise SomeLocallyDefinedError
때 오류에서 스크립트 실행 결과. 이 특별한 경우의 cmd는 해당 실행 바이너리의 경로입니다. 이 오류 MSG에게 나에게
"8 부동 소수점 예외"를 제공 ./binary_file
지금 내 터미널에서이 매우 바이너리를 실행할 때.
그러나 Popen에 의해 스크립트가 실행될 때 출력뿐만 아니라 오류도 발생하지 않습니다. 그러나 리턴 코드는 -8입니다. 나는 0이 아닌 반환 코드가 오류를 암시하고, 그렇다면 왜 Popen.communicate()가 메시지를 캡처하지 않았을까?
경우에 따라 실행 가능한 바이너리 파일이 무엇인지 궁금 할 때가 있습니다. 이진 파일은 런타임 오류가 발생하는 c 파일을 컴파일하여 생성되었습니다. SIGFPE
신호를 잡는 동안 여기서, C 파일
# include<stdio.h>
int main(){
int a = 18;
int b = 0;
int c = a/b;
printf("%d", c);
}