+/*-----------------------------------------------------------------*/
+/* setsignals - catch some signals */
+/*-----------------------------------------------------------------*/
+#include <signal.h>
+static void
+bad_signal(int sig)
+{
+ if ( simactive )
+ closeSimulator();
+ exit(1);
+}
+
+static void
+sigintr(int sig)
+{
+ /* may be interrupt from user: stop debugger ( also simulator ??) */
+ userinterrupt = 1;
+}
+
+/* the only child can be the simulator */
+static void sigchld(int sig)
+{
+ /* the only child can be the simulator */
+ int status, retpid;
+ retpid = wait ( &status );
+ /* if ( retpid == simPid ) */
+ simactive = 0;
+}
+
+static void
+setsignals()
+{
+ signal(SIGHUP , bad_signal);
+ signal(SIGINT , sigintr );
+ signal(SIGTERM, bad_signal);
+ signal(SIGCHLD, sigchld );
+
+ signal(SIGPIPE, SIG_IGN);
+ signal(SIGABRT, bad_signal);
+ signal(SIGALRM, bad_signal);
+ signal(SIGFPE, bad_signal);
+ signal(SIGILL, bad_signal);
+ signal(SIGPIPE, bad_signal);
+ signal(SIGQUIT, bad_signal);
+ signal(SIGSEGV, bad_signal);
+}
+