【发布时间】:2014-05-15 05:02:46
【问题描述】:
根据 UNIX 高级编程文档,SIGFPE 信号终止程序并生成核心文件。
这是我的程序
#include <unistd.h>
#include <signal.h>
#include <stdio.h>
#include <stdlib.h>
static void sig_fpe(int signo);
int
main()
{
int pid;
if(signal(SIGFPE, sig_fpe) == SIG_ERR)
printf("Signal error\n");
pid = 10;
pid = pid / 0;
exit(0);
}
static void
sig_fpe(int signo)
{
if(signo == SIGFPE){
printf("SIGFPE signal catch\n");
}
}
当我在 linux 机器上运行这个程序时,它会反复打印“SIGFPE signal catch”并且不会终止。样本输出为
SIGFPE signal catch
SIGFPE signal catch
SIGFPE signal catch
SIGFPE signal catch
SIGFPE signal catch
SIGFPE signal catch
SIGFPE signal catch
SIGFPE signal catch
SIGFPE signal catch
SIGFPE signal catch
SIGFPE signal catch
SIGFPE signal catch
SIGFPE signal catch
SIGFPE signal catch
SIGFPE signal catch
SIGFPE signal catch
SIGFPE signal catch
.
.
.
.
有什么问题?
【问题讨论】:
-
您可以捕获和处理除 SIGKILL 之外的任何信号。接下来会发生什么由您(您的程序)决定。