python-2.7 - 处理由 Python 代码产生的 C++ 子进程引起的段错误

标签 python-2.7 subprocess child-process segmentation-fault signal-handling

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

关于python-2.7 - 处理由 Python 代码产生的 C++ 子进程引起的段错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40317792/

相关文章:

javascript - 脱壳到 Node 时保留输出颜色

node.js - Node 子进程生成标准输出返回为空

具有函数属性的 Python 装饰器

python - sklearn 管道 - 在管道中应用多项式特征变换后应用样本权重

python - 在python中过滤以进行 Elasticsearch

python - 如何在使用 subprocess.Popen 并同时隐藏 cmd 窗口时设置输出文件?

python - 从 python(或 bash)部分并行运行外部命令

python - 如何计算字典列表中某个项目的出现次数?

Python执行powershell命令

node.js - nodejs child_process.spawn msdeploy.exe,目标站点中有空格