summaryrefslogtreecommitdiffstats
path: root/src/Daemon/Daemon.cpp
diff options
context:
space:
mode:
authorJiri Moskovcak <jmoskovc@redhat.com>2009-02-23 16:46:54 +0100
committerJiri Moskovcak <jmoskovc@redhat.com>2009-02-23 16:46:54 +0100
commit626938e2d237a00e2ecacd92f94435360d8399c3 (patch)
tree38b53194bba4732bd656bfa1131ed9c6188d094e /src/Daemon/Daemon.cpp
parentd740acb4e7c11eaf5deb94b35f33f0bfb7ee99be (diff)
downloadabrt-626938e2d237a00e2ecacd92f94435360d8399c3.tar.gz
abrt-626938e2d237a00e2ecacd92f94435360d8399c3.tar.xz
abrt-626938e2d237a00e2ecacd92f94435360d8399c3.zip
Better signal handling in daemon
Diffstat (limited to 'src/Daemon/Daemon.cpp')
-rw-r--r--src/Daemon/Daemon.cpp22
1 files changed, 18 insertions, 4 deletions
diff --git a/src/Daemon/Daemon.cpp b/src/Daemon/Daemon.cpp
index 2fa9823..835b76f 100644
--- a/src/Daemon/Daemon.cpp
+++ b/src/Daemon/Daemon.cpp
@@ -22,17 +22,31 @@
#include <cstdio>
#define daemonize 0
+CCrashWatcher *ccdaemon;
+DBus::Glib::BusDispatcher *dispatcher;
+
+void terminate(int signal)
+{
+ fprintf(stderr, "Got SIGINT/SIGTERM, cleaning up..\n");
+ delete ccdaemon;
+ delete dispatcher;
+ exit(0);
+}
int main(int argc, char** argv){
+ /*signal handlers */
+ signal(SIGTERM, terminate);
+ signal(SIGINT, terminate);
/* connect to dbus */
- DBus::Glib::BusDispatcher *dispatcher;
+ //DBus::Glib::BusDispatcher *dispatcher;
dispatcher = new DBus::Glib::BusDispatcher();
dispatcher->attach(NULL);
DBus::default_dispatcher = dispatcher;
DBus::Connection conn = DBus::Connection::SystemBus();
try{
- CCrashWatcher daemon(DEBUG_DUMPS_DIR, conn);
+ //CCrashWatcher daemon(DEBUG_DUMPS_DIR, conn);
+ ccdaemon = new CCrashWatcher(DEBUG_DUMPS_DIR, conn);
//if (argc > 1){
// if (strcmp(argv[1], "-d") == 0){
// daemonize = 0;
@@ -40,7 +54,7 @@ int main(int argc, char** argv){
// }
if(daemonize){
try{
- daemon.Daemonize();
+ ccdaemon->Daemonize();
}
catch(std::string err)
{
@@ -55,7 +69,7 @@ int main(int argc, char** argv){
#ifdef DEBUG
std::cerr << "trying to run" << std::endl;
#endif /*DEBUG*/
- daemon.Run();
+ ccdaemon->Run();
}
catch(std::string err)
{