linux下关于除数为0的信号为总结

今天在处理除数为0的时候的信号问题,发现了一个问题,暂时没有找到答案.

现象一:

代码如下:

#include <stdio.h>
#include <signal.h>
#include <unistd.h>
#include <sys/types.h>
#include <sys/stat.h>
#include <fcntl.h>
#include <errno.h>
#define LOG($STR) printf("[%s %s %d]:[%s]\n",__FILE__,__func__,__LINE__,$STR)


void myhandle()
{
        LOG("myhandle");
}




int main()
{
    int fd,i;
        signal(SIGFPE,myhandle);
    char path[]="./test.txt";
        LOG("测试");
        double li=0;
        double f=90;
        f= f/li;
        LOG("测试");
        return 0;

}

运算类型如果是double型的话不发出SIGFPE信号,至少是程序运行的时候没有捕捉到此信号.

现象二:

如果上段代码的f和li类型修改成int型,那么会捕捉到SIGFPE信号,但是会一直死循环到信号处理函数内。

 

应该是浮点型的数据不会为0,所以虽然是0.00但是计算机内其实不是0,故而没有没有0

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值