use sigaction() instead of signal() to remove SA_RESTART flag explicitly
authorEnrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
Tue, 30 Mar 2004 16:10:08 +0000 (16:10 +0000)
committerEnrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
Tue, 30 Mar 2004 16:10:08 +0000 (16:10 +0000)
git-svn-id: http://svn.linux-vserver.org/svn/util-vserver/trunk@1394 94cd875c-1c1d-0410-91d2-eb244daf1a30

util-vserver/src/vshelper-sync.c

index cf987de..91bc8fc 100644 (file)
@@ -59,8 +59,13 @@ void alarmHandler(int UNUSED sig)
 
 int main(int argc, char *argv[])
 {
-  int          fd;
-  int          idx = 1;
+  int                  fd;
+  int                  idx = 1;
+  struct sigaction     act = {
+    .sa_handler = alarmHandler,
+    .sa_flags   = SA_ONESHOT,
+  };
+  sigfillset(&act.sa_mask);
 
   if (argc>=2) {
     if (strcmp(argv[1], "--help")   ==0) showHelp(1, argv[0], 0);
@@ -74,7 +79,10 @@ int main(int argc, char *argv[])
   }
 
 
-  signal(SIGALRM, alarmHandler);
+  if (sigaction(SIGALRM, &act, 0)==-1) {
+    perror("vshelper-sync: sigaction()");
+    return EXIT_FAILURE;
+  }
   alarm(atoi(argv[idx+1]));
   
   fd = open(argv[idx], O_RDONLY,0);
@@ -96,4 +104,4 @@ int main(int argc, char *argv[])
   }
 
   return EXIT_SUCCESS;
-}
+  }