diff options
| author | Jiri Moskovcak <jmoskovc@redhat.com> | 2009-02-23 16:46:54 +0100 |
|---|---|---|
| committer | Jiri Moskovcak <jmoskovc@redhat.com> | 2009-02-23 16:46:54 +0100 |
| commit | 626938e2d237a00e2ecacd92f94435360d8399c3 (patch) | |
| tree | 38b53194bba4732bd656bfa1131ed9c6188d094e /src/Daemon/Daemon.cpp | |
| parent | d740acb4e7c11eaf5deb94b35f33f0bfb7ee99be (diff) | |
| download | abrt-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.cpp | 22 |
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) { |
