diff --git a/signals.c b/signals.c new file mode 100644 --- /dev/null +++ b/signals.c @@ -0,0 +1,43 @@ +/** + * $Id: signals.c,v 1.1.1.1 2008-04-28 17:32:53 mbroeker Exp $ + * $Source: /development/c/demos/signals.c,v $ + * + */ + +#ifndef _XOPEN_SOURCE +#define _XOPEN_SOURCE 500 +#endif + +#include +#include +#include + +void sigproc () +{ + signal (SIGINT, sigproc); + printf ("I received the SIGINT Signal\n"); +} + +void sigquit () +{ + printf ("I received the SIGQUIT Signal\n"); + /* + * This kills the process and subprocesses + */ + kill (-1, SIGKILL); + /* + * ^^ can not be reached + */ + exit (0); +} + +int main (int argc, char **argv) +{ + signal (SIGINT, sigproc); + signal (SIGQUIT, sigquit); + + printf ("PRESS CTRL-\\ to quit\n"); + for (;;); + + return EXIT_SUCCESS; +}