python-2.7 – 处理由Python代码生成的C子进程导致的分段错误

我已经阅读了一些关于
Python中的信号处理的文章,并且由于某种原因没有获得所需的输出.

这是我的C代码.它旨在模拟分段错误.

Python代码的目的是将C程序作为子进程运行并捕获运行时错误(如果有的话).

int main()
{
int*a;
a=NULL;
cout<<*a<<endl;
return 0;
}

python代码如下:

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)  

使用Python代码运行相同时,不会观察到任何输出.
我的做法出了什么问题?
提前感谢你.

PS:我尝试过这个替代方案并且有效.但是,它不能用于我的应用程序,因为我不能使用wait()方法.

a.wait()
if a.returncode == -11:
    print "Segmentation fault, core dumped"

最佳答案 好的,这个问题已经解决了.而不是使用

signal.signal(signal.SIGSEGV,handler)

我使用了以下内容:

signal.signal(signal.SIGCHLD,handler)
点赞