From ad8c4404529af39669bba58fdf64121d0416b21a Mon Sep 17 00:00:00 2001 From: hades Date: Wed, 15 Nov 2000 12:19:56 +0000 Subject: [PATCH] BUGFIX common code for worker and agent in signal handlin introduced inconsistend install and remove of sighandlers, agent was not killable any more afet to start of workers --- hadaq/worker.c | 12 +++++++----- hadaq/worker.h | 2 ++ 2 files changed, 9 insertions(+), 5 deletions(-) diff --git a/hadaq/worker.c b/hadaq/worker.c index 3e37020..d5febbe 100644 --- a/hadaq/worker.c +++ b/hadaq/worker.c @@ -1,4 +1,4 @@ -static char rcsId[] = "$Header: /misc/hadesprojects/daq/cvsroot/eventbuilder/hadaq/worker.c,v 6.3 2000-11-11 08:55:39 hades Exp $"; +static char rcsId[] = "$Header: /misc/hadesprojects/daq/cvsroot/eventbuilder/hadaq/worker.c,v 6.4 2000-11-15 12:19:56 hades Exp $"; #define _POSIX_C_SOURCE 199309L #include @@ -114,8 +114,8 @@ static int closeStatShm(Worker *my) } static int removeSigHandlers(Worker *my) { - return sigaction(SIGINT, my->oldSigAction0, NULL) - | sigaction(SIGTERM, my->oldSigAction1, NULL); + return sigaction(my->signal0, my->oldSigAction0, NULL) + | sigaction(my->signal1, my->oldSigAction1, NULL); } static int installSigHandlers(Worker *my, int s0, int s1, void (*sigHandler) (int)) { @@ -127,13 +127,15 @@ static int installSigHandlers(Worker *my, int s0, int s1, void (*sigHandler) (in act->sa_flags = 0; my->oldSigAction0 = &my->oldSigAction0S; - if (0 > sigaction(s0, act, my->oldSigAction0)) { + my->signal0 = s0; + if (0 > sigaction(my->signal0, act, my->oldSigAction0)) { msglog(LOG_DEBUG, "%s:%d: %s\n", __FILE__, __LINE__, strerror(errno)); my->oldSigAction0 = NULL; } + my->signal1 = s1; my->oldSigAction1 = &my->oldSigAction1S; - if (0 > sigaction(s1, act, my->oldSigAction1)) { + if (0 > sigaction(my->signal1, act, my->oldSigAction1)) { msglog(LOG_DEBUG, "%s:%d: %s\n", __FILE__, __LINE__, strerror(errno)); my->oldSigAction1 = NULL; } diff --git a/hadaq/worker.h b/hadaq/worker.h index 3b799ec..8fa4921 100644 --- a/hadaq/worker.h +++ b/hadaq/worker.h @@ -13,6 +13,8 @@ typedef struct StatisticS { typedef struct WorkerS { char name[_POSIX_PATH_MAX]; + int signal0; + int signal1; struct sigaction oldSigAction0S; struct sigaction *oldSigAction0; struct sigaction oldSigAction1S; -- 2.43.0