signals.c
上传用户:ladybrid91
上传日期:2007-01-04
资源大小:287k
文件大小:2k
源码类别:

Web服务器

开发平台:

Unix_Linux

  1. /*
  2. ** signals.c
  3. **
  4. ** Copyright (c) 1994-1997 Peter Eriksson <pen@signum.se>
  5. **
  6. ** This program is free software; you can redistribute it and/or modify
  7. ** it under the terms of the GNU General Public License as published by
  8. ** the Free Software Foundation; either version 2 of the License, or
  9. ** (at your option) any later version.
  10. **
  11. ** This program is distributed in the hope that it will be useful,
  12. ** but WITHOUT ANY WARRANTY; without even the implied warranty of
  13. ** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
  14. ** GNU General Public License for more details.
  15. ** You should have received a copy of the GNU General Public License
  16. ** along with this program; if not, write to the Free Software
  17. ** Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
  18. */
  19. #include <signal.h>
  20. #include <syslog.h>
  21. #include "phttpd.h"
  22. static void dummy_handler()
  23. {
  24.     /* Nothing */
  25. }
  26. void signals_setup(sigset_t *sig_set)
  27. {
  28.     struct sigaction actb;
  29.     
  30.     sigemptyset(sig_set);
  31.     sigaddset(sig_set, SIGHUP);
  32. /*    sigaddset(sig_set, SIGINT); */
  33.     sigaddset(sig_set, SIGQUIT); 
  34.     sigaddset(sig_set, SIGTERM);
  35.     sigaddset(sig_set, SIGUSR1);
  36.     sigaddset(sig_set, SIGUSR2);
  37.     sigaddset(sig_set, SIGALRM);
  38.     sigaddset(sig_set, SIGPIPE);
  39. /*  sigaddset(sig_set, SIGCHLD); */
  40.     thr_sigsetmask(SIG_BLOCK, sig_set, NULL);
  41.     /* Mainly for SGI/IRIX */
  42.     actb.sa_handler = SIG_IGN;
  43.     actb.sa_flags = 0;
  44.     sigemptyset(&actb.sa_mask);
  45.     sigaction(SIGALRM, &actb, NULL);
  46.     
  47.     actb.sa_handler = SIG_IGN;
  48.     actb.sa_flags = 0;
  49.     sigemptyset(&actb.sa_mask);
  50.     sigaction(SIGPIPE, &actb, NULL);
  51. /*    actb.sa_handler = SIG_IGN;
  52.     actb.sa_flags = 0;
  53.     sigemptyset(&actb.sa_mask);
  54.     sigaction(SIGCHLD, &actb, NULL);
  55. */
  56.     actb.sa_handler = dummy_handler;
  57.     actb.sa_flags = 0;
  58.     sigemptyset(&actb.sa_mask);
  59.     sigaction(SIGHUP, &actb, NULL);
  60. /*
  61.     actb.sa_handler = dummy_handler;
  62.     actb.sa_flags = 0;
  63.     sigemptyset(&actb.sa_mask);
  64.     sigaction(SIGINT, &actb, NULL);
  65. */
  66.     actb.sa_handler = dummy_handler;
  67.     actb.sa_flags = 0;
  68.     sigemptyset(&actb.sa_mask);
  69.     sigaction(SIGQUIT, &actb, NULL);
  70.     actb.sa_handler = dummy_handler;
  71.     actb.sa_flags = 0;
  72.     sigemptyset(&actb.sa_mask);
  73.     sigaction(SIGUSR1, &actb, NULL);
  74.     actb.sa_handler = dummy_handler;
  75.     actb.sa_flags = 0;
  76.     sigemptyset(&actb.sa_mask);
  77.     sigaction(SIGUSR2, &actb, NULL);
  78.     actb.sa_handler = dummy_handler;
  79.     actb.sa_flags = 0;
  80.     sigemptyset(&actb.sa_mask);
  81.     sigaction(SIGTERM, &actb, NULL);
  82. }