#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 */
#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 */