Implemented aborting on exit of child process of --gnokiid
authorshort <>
Sat, 16 Mar 2002 19:16:54 +0000 (19:16 +0000)
committershort <>
Sat, 16 Mar 2002 19:16:54 +0000 (19:16 +0000)
gnokii/gnokii.c

index caec03c..e6692ab 100644 (file)
@@ -4119,6 +4119,12 @@ int monitormode(int argc, char *argv[])
 
 #ifdef UCLINUX
 
+static void gnokiid_SIGCHLD(int signo)
+{
+       fprintf (stderr, _("Child process exited, aborting...\n"));
+       exit(2);
+}
+
 static int gnokiid(int argc, char *argv[])
 {
        bool    DebugMode;  /* When true, run in debug mode */
@@ -4154,15 +4160,15 @@ static int gnokiid(int argc, char *argv[])
 #ifdef DEBUG
                fprintf (stderr, _("Spawning gnokiid startup child process \"%s\"...\n"), *argv);
 #endif
-               /* default action for SIGCHLD is SIG_IGN, should be OK */
+               signal(SIGCHLD,gnokiid_SIGCHLD);
                errno=0;
                switch (vfork()) {
                        case -1: /* vfork() failure */
-                               fprintf (stderr, _("vfork() failed! (%m)\n"));
+                               fprintf (stderr, _("vfork() failed! (%s)\n"),strerror(errno));
                                return -1;
                        case 0: /* child */
                                execv(*argv,argv);
-                               fprintf (stderr, _("Spawn of child process failed! (%m)\n"));
+                               fprintf (stderr, _("Spawn of child process failed! (%s)\n"),strerror(errno));
                                _exit(9);
                                break;
                        default: /* parent */