```
#include <fenv.h>
int main(void)
{
feenableexcept(FE_ALL_EXCEPT);
double x = 0.0;
double y = 1.0 / x;
return 0;
}
```
With sigaction:
```
#include <fenv.h>
#include <signal.h>
#include <stdio.h>
#include <string.h>
static void fpe_handler(int sig)
{
printf("Caught signal %d\n", sig);
}
int main(void)
{
struct sigaction sa;
sa.sa_handler = handler;
Sigemptyset(&sa.sa_mask);
sa.sa_flags = SA_SIGINFO;
if (sigaction(SIGFPE, &sa, NULL) == -1)
{
printf("error\n");
}
volatile double x,y, res;
int mask = feenableexcept(FE_INVALID |
FE_DIVBYZERO |
FE_OVERFLOW |
FE_UNDERFLOW);
signal(SIGFPE, fpe_handler);
printf("mask: %x\n", mask);
feenableexcept(FE_ALL_EXCEPT);x = 0.0;
double x = 0.0; y = 1234.0 ;
double y = 1.0 res = y / x;
return y;
}res;
```}```