From 1c6fdc05d37ad78d97f1801b1ac7efc3437806eb Mon Sep 17 00:00:00 2001 From: octo Date: Sun, 18 Dec 2005 12:16:05 +0000 Subject: [PATCH] Moved the signal handler initialization so it gets run in the child, not the parent.. --- src/collectd.c | 26 ++++++++++++++------------ 1 file changed, 14 insertions(+), 12 deletions(-) diff --git a/src/collectd.c b/src/collectd.c index a9b1ac80..247a185f 100644 --- a/src/collectd.c +++ b/src/collectd.c @@ -262,9 +262,11 @@ static int pidfile_remove (const char *file) int main (int argc, char **argv) { +#if COLLECT_DAEMON + struct sigaction sigChldAction; +#endif struct sigaction sigIntAction; struct sigaction sigTermAction; - struct sigaction sigChldAction; char *configfile = CONFIGFILE; char *plugindir = PLUGINDIR; char *datadir = PKGLOCALSTATEDIR; @@ -383,21 +385,12 @@ int main (int argc, char **argv) } /* - * install signal handlers + * fork off child */ - sigIntAction.sa_handler = sigIntHandler; - sigaction (SIGINT, &sigIntAction, NULL); - - sigIntAction.sa_handler = sigTermHandler; - sigaction (SIGTERM, &sigTermAction, NULL); - +#if COLLECT_DAEMON sigChldAction.sa_handler = SIG_IGN; sigaction (SIGCHLD, &sigChldAction, NULL); - /* - * fork off child - */ -#if COLLECT_DAEMON if (daemonize) { if ((pid = fork ()) == -1) @@ -444,6 +437,15 @@ int main (int argc, char **argv) #endif /* COLLECT_DAEMON */ /* + * install signal handlers + */ + sigIntAction.sa_handler = sigIntHandler; + sigaction (SIGINT, &sigIntAction, NULL); + + sigIntAction.sa_handler = sigTermHandler; + sigaction (SIGTERM, &sigTermAction, NULL); + + /* * run the actual loops */ #if HAVE_LIBRRD -- 2.11.0