[net.micro.6809] Microware C

rickb@tekig4.UUCP (Rick Bensene) (12/28/85)

Greetings, OS-9 fans,

 Recently I've been doing some programming using the CoCo Version
of the Microware C Compiler, specifically doing some 'user-friendly'
stuff where intelligent trapping of Control-C is needed.  The logical
choice to trap the SIGINT signals is the library function signal().
The documentation says that you pass signal() the type of signal
to be trapped, and a parameter specifying what action to be taken
when the signal is detected.  The 'action' is either a pointer to
a procedure to execute when the signal is detected, or 0(zero) to
cause default signal processing (abort job with signal code as exit
status), or 1 to cause the signal to be ignored, with no action
taken.  Well, everything seems to work OK except when I try to
use code 1 to cause given signals to be ignored.  When I do this:

   ...
   ...
   signal(SIGINT,SIG_IGN);  /* Where SIG_IGN is defined as 1 */
   ...
   ...

and the SIGINT signal comes in, the system immediatly crashes.
I '#included' <signal.h>, and the whole mess compiles properly, but
it just doesn't work no matter what I try.  The other signal processing
code (0) works fine, and I can pass a pointer to a procedure, and that
works OK.  Anyone out there got any ideas as to what the problem might
be, and if it's a bug, any way to fix it?

Of course, it IS possible to pass a pointer to a null routine to
cause the signal to be 'ignored', but it's not a clean way to do
it.

Thanks in advance,

Rick Bensene
{ihnp4, decvax, allegra, cbosg, ucbvax}!tektronix!tekig4!rickb
Phone: Weekdays (503) 627-3559
       BBS: (503) 254-0458  300/1200 baud, 24 hours a day
US Mail: Tektronix, Inc. - P.O. Box 500, Mail Stop 39-170 - Beaverton,
 Oregon  97077