diff options
author | Martin Ebourne <martin@ebourne.me.uk> | 2005-11-30 23:14:40 +0000 |
---|---|---|
committer | Martin Ebourne <martin@ebourne.me.uk> | 2005-11-30 23:14:40 +0000 |
commit | 01ca97865fa9d6ed1a967e970927265f1c348289 (patch) | |
tree | 5e7e1f70b38b156994c3802ba3e77fbf288fe937 /lib/server/Daemon.cpp | |
parent | 99f8ce096bc5569adbfea1911dbcda24c28d8d8b (diff) |
Merged martin/solaris at r9 to trunk
Diffstat (limited to 'lib/server/Daemon.cpp')
-rwxr-xr-x | lib/server/Daemon.cpp | 14 |
1 files changed, 11 insertions, 3 deletions
diff --git a/lib/server/Daemon.cpp b/lib/server/Daemon.cpp index 31997fb6..1885c6c8 100755 --- a/lib/server/Daemon.cpp +++ b/lib/server/Daemon.cpp @@ -141,7 +141,11 @@ int Daemon::Main(const char *DefaultConfigFile, int argc, const char *argv[]) SetupInInitialProcess(); // Set signal handler - if(::signal(SIGHUP, SignalHandler) == SIG_ERR || ::signal(SIGTERM, SignalHandler) == SIG_ERR) + struct sigaction sa; + sa.sa_handler = SignalHandler; + sa.sa_flags = 0; + ::sigemptyset(&sa.sa_mask); + if(::sigaction(SIGHUP, &sa, NULL) != 0 || ::sigaction(SIGTERM, &sa, NULL) != 0) { THROW_EXCEPTION(ServerException, DaemoniseFailed) } @@ -354,8 +358,12 @@ int Daemon::Main(const char *DefaultConfigFile, int argc, const char *argv[]) void Daemon::EnterChild() { // Unset signal handlers - ::signal(SIGHUP, SIG_DFL); - ::signal(SIGTERM, SIG_DFL); + struct sigaction sa; + sa.sa_handler = SIG_DFL; + sa.sa_flags = 0; + ::sigemptyset(&sa.sa_mask); + ::sigaction(SIGHUP, &sa, NULL); + ::sigaction(SIGTERM, &sa, NULL); } |