2
저는 파이썬에서 신호 처리에 관한 몇 가지 기사를 읽었으며 어떤 이유로 원하는 결과를 얻지 못하고 있습니다.
이것은 내 C++ 코드입니다. 분할 결함을 시뮬레이트하기위한 것입니다.
파이썬 코드의 목적은 C++ 프로그램을 서브 프로세스로 실행하고 런타임 오류가있는 경우이를 잡는 것입니다.파이썬 코드에 의해 생성 된 C++ 하위 프로세스로 인한 분할 오류 처리
from subprocess import *
import signal
def handler(signum,frame):
print "Error Occured",signum
raise IOError("Segmentation Fault Occured.")
#The C++ code is already compiled
a = Popen(["./a.out"])
try:
signal.signal(signal.SIGSEGV,handler)
except IOError as e:
print e
은 C++ 코드는 직접 단말기에서 실행되면, 이것은 출력 (파이썬 코드를 사용하지 않음) :
Segmentation fault (core dumped)
다음
int main()
{
int*a;
a=NULL;
cout<<*a<<endl;
return 0;
}
파이썬 코드는
파이썬 코드를 사용하여 동일한 코드를 실행하면 출력이 발생하지 않습니다.
내 접근 방식에 어떤 문제가 있습니까?
미리 감사드립니다.
추신 : 나는 이것을 대안으로 시도해 보았습니다. 그러나 wait() 메서드를 사용할 수 없으므로 응용 프로그램에 사용할 수 없습니다.
a.wait()
if a.returncode == -11:
print "Segmentation fault, core dumped"