如何编写一个可以区分SIGFPE不同原因的自定义信号处理程序?

时间:2019-06-26 08:51:35

标签: c

我想编写一个自定义信号处理程序函数,该函数可以确定哪种类型的浮点异常已生成了SIGFPE信号。

我尝试使用信号和sigaction函数。

这是我的示例程序,使用信号功能捕获SIGFPE。


#include <stdio.h>
#include <math.h>
#include <signal.h>

int flag = 0;

void sig_handler(int signo)
{
  if (signo == SIGFPE)
    flag = 1
}

int main()
{
    //feclearexcept(FE_ALL_EXCEPT);
    //printf("%d\n", fegetexcept());

    printf("%f\n", sqrt(-1));

    signal(SIGFPE, sig_handler);
    if(fetestexcept(FE_INVALID))
    {
        raise(SIGFPE);


    }



    return 0;
}

注意:我在RISC-V体系结构上工作时,不能使用fenv.h中定义的功能。

编译器版本:riscv64-unknown-elf-gcc(GCC)8.2.0

0 个答案:

没有答案