you are right. so here is the new patch. this time using sigaction.

Armin

On Fri, 2003-09-26 at 00:00, Hubert Figuiere wrote:
> According to Armin Bauer <[EMAIL PROTECTED]>:
> >  
> > +void sig_child(int crap)
> > +{
> > +       waitpid(-1, NULL, WNOHANG);
> > +        signal(SIGCHLD,sig_child);
> > +}
> >  
> >  int main (int argc, char **argv)
> >  {
> > @@ -1988,6 +1995,7 @@
> >    textdomain (PACKAGE);
> >  #endif
> >  
> > + signal(SIGCHLD,sig_child);
> 
> Why not using sigaction(2) ? It is better and don't need to rearm...
> Even signal(2) manpage recommends sigaction(2).
> 
> Hub
--- multisync/src/syncengine.c  2003-09-25 20:58:39.000000000 +0200
+++ projects/multisync/src/syncengine.c 2003-09-26 12:57:02.000000000 +0200
@@ -1,4 +1,4 @@
-/* 
+/*
    MultiSync - A PIM data synchronization program
    Copyright (C) 2002-2003 Bo Lincoln <[EMAIL PROTECTED]>
 
@@ -38,6 +38,8 @@
 #include <stdlib.h>
 #include <glib.h>
 #include <time.h>
+#include <signal.h>
+#include <sys/wait.h>
 #include "syncengine.h"
 #include <sys/types.h>
 #include <sys/stat.h>
@@ -1963,6 +1965,10 @@
          (objtype==SYNC_OBJECT_TYPE_PHONEBOOK?"Contact":"Unknown")));
 }
 
+void sig_child(void)
+{
+       waitpid(-1, NULL, WNOHANG);
+}
 
 int main (int argc, char **argv)
 {
@@ -1982,12 +1988,17 @@
                                  1,
                                  "Use a non-default data direcory.",
                                  NULL }, NULL };
-  
+  struct sigaction sg_action;
+
 #ifdef ENABLE_NLS
   bindtextdomain (PACKAGE, PACKAGE_LOCALE_DIR);
   textdomain (PACKAGE);
 #endif
 
+  sg_action.sa_handler = (void *)sig_child;
+  sg_action.sa_flags = SA_NOCLDSTOP;
+
+  sigaction(SIGCHLD, &sg_action, NULL);
 
   gnome_program_init (PACKAGE, VERSION, LIBGNOMEUI_MODULE,
                       argc, argv,

Reply via email to