在 Linux 上,我有一个希望通过 Python 脚本运行的可执行文件。可执行文件除以零,我似乎无法处理来自子进程的信号。我四处阅读,似乎 preexec_fn 应该处理 SIGFPE,但到目前为止还没有运气。
我正在使用 Python 2.7
我的代码:
# b.py
import os
import subprocess
import signal
import sys
def pref_fun():
signal.signal(signal.SIGFPE,foo)
def foo(signal,frame):
print "Caught signal!"
sys.exit(0)
sub = subprocess.Popen(["a.out"], preexec_fn=pref_fun)
sub.wait()
v = sub.returncode
print "value: ", v
和我的孩子:
a.c
#include <stdio.h>
#include <stdlib.h>
int main() {
printf("Now dividing by zero\n");
fflush(stdout);
double x = 5;
x= 5/0;
printf("oh no\n");
return 0;
}
预期的输出是“捕获信号!”,但我似乎没有得到它。