[ILUG] C - catching or ignoring SIGFPE

Dave Neary dave.neary at palamon.ie
Tue Nov 13 11:24:44 GMT 2001


Kevin O Riordan wrote:
> 
> Morning everybody,
>         Is there any way to catch, or ignore, a SIGFPE ?  This isn't for
> any practical reason, just to satisfy curiosity.

The devil's in the detail here. At the end of the manpage for sigaction,
there's a note which says 
       " According to POSIX, the behaviour of a  process  is  unde­
       fined after it ignores a SIGFPE, SIGILL, or SIGSEGV signal
       that was not generated by the kill() or the raise()  func­
       tions.  Integer division by zero has undefined result.  On
       some architectures  it  will  generate  a  SIGFPE  signal.
       (Also  dividing the most negative integer by -1 may gener­
       ate SIGFPE.)  Ignoring this signal might lead to  an  end­
       less loop."
And in fact, if you raise the FPE with raise() rather than with i=3/0;
then the ignore and catch stuff works fine.

Sorry there's no better answer than "You can't, in general", but there
you go.

Cheers,
Dave.

-- 
David Neary,               E-Mail dave.neary at palamon.ie
Palamon Technologies Ltd.  Phone +353-1-634-5059




More information about the ILUG mailing list