home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Internet MPEG Audio Archive
/
IMAA.mdf
/
util
/
dos
/
l3v100n
/
rsx
/
source
/
sample
/
sig1.c
< prev
Wrap
C/C++ Source or Header
|
1994-01-19
|
1KB
|
63 lines
/* sig1.c (emx+gcc) */
/* Expected output: +s-+s--+s+s+s-x */
#include <stdio.h>
#ifdef __EMX__
#include <signal.h>
#else
#include <sys\_signal.h>
#endif
volatile int ack;
void handler (int sig)
{
putchar ('s');
fflush(stdout);
if (ack)
signal (sig, SIG_ACK);
}
void make_stack (void)
{
}
int main (void)
{
make_stack ();
setbuf(stdout,NULL);
if (signal (SIGINT, handler) == SIG_ERR)
{
puts ("signal failed");
return (1);
}
ack = 0;
putchar ('+');
raise (SIGINT); /* +s */
putchar ('-');
raise (SIGINT); /* - , maske aus */
putchar ('+');
signal (SIGINT, SIG_ACK); /* maske an , ->raise */
putchar ('-');
raise (SIGINT); /* - , maske aus */
putchar ('-');
raise (SIGINT); /* - , maske aus */
ack = 1;
putchar ('+');
signal (SIGINT, SIG_ACK);
putchar ('+');
raise (SIGINT);
putchar ('+');
raise (SIGINT);
signal (SIGINT, SIG_IGN);
putchar ('-');
raise (SIGINT);
signal (SIGINT, SIG_DFL);
putchar ('x');
/* signal (SIGINT, SIG_ACK); */
raise (SIGINT);
return (0);
}