2
私はPythonのシグナルハンドリングに関するいくつかの記事を読んでいますが、何らかの理由で目的の出力が得られません。
これは私のC++コードです。これは、セグメンテーションフォルトをシミュレートするためのものです。
Pythonコードの目的は、C++プログラムをサブプロセスとして実行し、実行時エラーがある場合はそれをキャッチすることです。Pythonコードで生成された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++コードを直接端末上で実行されると、これが出力される(Pythonコードを使用していない):
Segmentation fault (core dumped)
次のように
int main()
{
int*a;
a=NULL;
cout<<*a<<endl;
return 0;
}
Pythonコードであります
Pythonコードを使用して同じものを実行すると、出力は観察されません。
私のアプローチではどうなりますか?
ありがとうございます。
PS:これを代替として試してみました。しかし、私はwait()メソッドを使用することができないので、私のアプリケーションに使用することはできません。
a.wait()
if a.returncode == -11:
print "Segmentation fault, core dumped"