From: octo Date: Sun, 18 Dec 2005 12:16:05 +0000 (+0000) Subject: Moved the signal handler initialization so it gets run in the child, not the parent.. X-Git-Tag: collectd-3.6.0~28 X-Git-Url: https://git.verplant.org/?a=commitdiff_plain;h=1c6fdc05d37ad78d97f1801b1ac7efc3437806eb;p=collectd.git Moved the signal handler initialization so it gets run in the child, not the parent.. --- 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