日期:2014-05-16  浏览次数:20573 次

特意测试了除0错误,signal捕获处理了SIGFPE,但是随后陷入死循环
本帖最后由 u011473808 于 2013-07-22 15:17:40 编辑
如题,我写了个很小的程序,来测试SIGFPE如何被捕获和处理:

#include<stdio.h>
#include<signal.h>
#include<sys/types.h>
void f(int signo)
{
    printf("signo=%d\n",signo);
}
int main(int argc,char* argv[])
{
    signal(SIGFPE,f);
    int div=argc/(argc-1);
    return 0;
}

编译运行。发现程序不断的打印
signo=8
问题是,我预想这个程序只打印一次signo就应该退出啊。我的想法错在哪里?

------解决方案--------------------
这个解释不错
http://51hired.com/questions/14965/%E5%A6%82%E4%BD%95%E5%9C%A8SIGFPE%E5%90%8E%E7%BB%A7%E7%BB%AD%E8%BF%90%E8%A1%8C%EF%BC%9F