2014-02-27 7 views
0

나는 C/C++ 코드를 컴파일하고 실행하는 파이썬 스크립트를 작성 중이다. 런타임 오류을 캡처하고 싶습니다. 예 : Nzecv, 분할 장애, 분열 오류 등잡기 RUNTIME 서브 프로세스 모듈의 파이썬 POPEN 함수에 의해 실행되는 실행 파일의 오류

내가 컴파일 된 파일 실행 명령을 다음 사용하고 있습니다 : 나는 런타임 오류가있는 몇 가지 프로그램을 시도

process = Popen(exec_path , stdin=PIPE, stdout=PIPE, stderr=PIPE, shell= False) 
(output, error) = process.communicate(testCase) 

을하지만, 오류가 가에 반영이 arent stderr. 일부 연구 결과 stderr가 프로그램의 반환 값에서 읽는 것으로 나타났습니다. 그리고 C 및 대부분 다른 모든 프로그램에서 main return custom ("return 0;")은 오류 신호가 아니라 값을 반환합니다.

캐치 런타임 오류 신호가 가능합니까? 어떻게 구현해야합니까?

EDIT : 터미널에서 런타임 오류 신호를 캡처 할 수 있습니까? 방법? 그렇다면 python을 통해 해당 쉘 스크립트를 실행하십시오.

답변

1

런타임 오류 신호를 포착 할 수 있습니까? 어떻게 구현해야합니까?

자식 프로세스가 신호에 의해 살해되어 있는지 여부를 확인하려면, 당신은 process.returncode을 검사 할 수 있습니다 :

음의 값 -N은 아이가 신호 N (UNIX 전용)에 의해 종료되었음을 나타냅니다.

참고 : 자식 프로세스에서 신호에 대한 사용자 정의 핸들러를 제공하려는 경우, 당신은 preexec_fnsignal.signal() 전화를 볼 수 code example that shows how to restore default signal handler using prexec_fn