File FreeWnn-sighandler.patch of Package fwnn

--- BUILD/FreeWnn-1.1.1-a021/Wnn/jserver/de.c
+++ BUILD/FreeWnn-1.1.1-a021/Wnn/jserver/de.c
@@ -212,6 +212,19 @@
 #  include <tcpd.h>
 #endif /* HAVE_LIBWRAP */
 
+#ifndef NOTFORK
+static void father_sighandler (const int sig)
+{
+  if (signal(sig, SIG_DFL) == SIG_ERR)
+    _exit (2);
+
+  if (sig == SIGTERM)
+    _exit(0);
+  else
+    _exit(-1);
+}
+#endif
+
 /* No arguments are used. Only options. */
 int
 main (int argc, char *argv[])
@@ -248,14 +261,14 @@
     {
       if (fork ())
 	{
-	  signal (SIGCHLD, _exit);
+	  signal (SIGCHLD, father_sighandler);
 	  signal (SIGHUP, SIG_IGN);
 	  signal (SIGINT, SIG_IGN);
 	  signal (SIGQUIT, SIG_IGN);
 #ifdef  SIGTSTP
 	  signal (SIGTSTP, SIG_IGN);
 #endif
-	  signal (SIGTERM, _exit);
+	  signal (SIGTERM, father_sighandler);
 	  pause ();
 	}
     }