Add pthread checks to CMakeLists.txt
[inoclam.git] / signal.cxx
blobfb102140f9cbde3db4931f30a7b95ab5116cf582
1 /*
2 * inoclam - Inotify+ClamAV virus scanner
3 * Copyright (C) 2007 Vermont Department of Taxes
5 * This program is free software; you can redistribute it and/or modify
6 * it under the terms of the GNU General Public License as published by
7 * the Free Software Foundation; either version 2 of the License, or
8 * (at your option) any later version.
10 * This program is distributed in the hope that it will be useful,
11 * but WITHOUT ANY WARRANTY; without even the implied warranty of
12 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13 * 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
19 * Contributor(s):
20 * Tom Cort <tom.cort@state.vt.us>
23 #include <libdaemon/dlog.h>
24 #include <signal.h>
26 #include "signal.hxx"
28 /**
29 * Global variable used to determine if the program should halt. Will it ever halt? Only Alan Turing knows.
30 * @see handle_signal()
32 int exit_now;
34 /**
35 * Signal handler for SIGKILL
36 * @param sig signal to handle.
38 void handle_sigkill(int sig)
40 if (sig == SIGKILL) {
41 exit_now = 1;
42 daemon_log(LOG_INFO, "(%s:%u) SIGKILL Caught ; preparing to exit", __FILE__, __LINE__);
46 /**
47 * Signal handler for SIGQUIT
48 * @param sig signal to handle.
50 void handle_sigquit(int sig)
52 if (sig == SIGQUIT) {
53 exit_now = 1;
54 daemon_log(LOG_INFO, "(%s:%u) SIGQUIT Caught ; preparing to exit", __FILE__, __LINE__);
58 /**
59 * Signal handler for SIGINT
60 * @param sig signal to handle.
62 void handle_sigint(int sig)
64 if (sig == SIGINT) {
65 exit_now = 1;
66 daemon_log(LOG_INFO, "(%s:%u) SIGINT Caught ; preparing to exit", __FILE__, __LINE__);
70 /**
71 * installs signal handlers (mostly SIG_IGN)
73 void install_signal_handlers()
76 int i;
78 for (i = 0; i < 32; i++) {
79 if (i != SIGCHLD && i != SIGQUIT && i != SIGINT && i != SIGKILL) {
80 signal(i, SIG_IGN);
84 signal(SIGKILL, handle_sigkill);
85 signal(SIGQUIT, handle_sigquit);
86 signal(SIGINT, handle_sigint);