]> jspc29.x-matter.uni-frankfurt.de Git - daqdata.git/commitdiff
BUGFIX common code for worker and agent in signal handlin introduced
authorhades <hades>
Wed, 15 Nov 2000 12:19:56 +0000 (12:19 +0000)
committerhades <hades>
Wed, 15 Nov 2000 12:19:56 +0000 (12:19 +0000)
inconsistend install and remove of sighandlers, agent was not killable
any more afet to start of workers

hadaq/worker.c
hadaq/worker.h

index 3e370207b77578e7224af27bf2714a63cac290f4..d5febbe269b17ee6bf25faf76e48ddf5da20dc2d 100644 (file)
@@ -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 <unistd.h>
@@ -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;
        }
index 3b799ecdda8467e3686e6816aa486dd40a8f18a0..8fa49213431580dce2ce52fa564015755a610785 100644 (file)
@@ -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;