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,