我已经阅读了一些关于
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)