termination: add SIGINT, SIGTERM, and SIGUSR1 handler
authorJinhyung Choi <jinhyung2.choi@samsung.com>
Thu, 21 May 2015 12:00:49 +0000 (21:00 +0900)
committerJinhyung Choi <jinhyung2.choi@samsung.com>
Fri, 22 May 2015 02:13:06 +0000 (11:13 +0900)
- SIGINT for <Ctrl-c>
- SIGTERM for kill
- SIGUSR1 for systemd killing signal

Change-Id: I3c1826a905b42ef808c765a5e0cd18e1f1db7820
Signed-off-by: Jinhyung Choi <jinhyung2.choi@samsung.com>
emuld.service
packaging/emuld.spec
src/common.cpp

index 7266b979af77b59b00f3677910531aac2fd41e44..46367b47dac90000b520744b976b030ed8c5cc4c 100644 (file)
@@ -8,6 +8,7 @@ After=connman.service
 [Service]
 Type=simple
 ExecStart=/usr/bin/emuld
+KillSignal=SIGUSR1
 
 [Install]
 WantedBy=emulator.target
index e388b9d9c0d9c985655b3baf1a4c97c794e955e3..3f873a3eddc0251c61b9ad79816b87f5c9521fe2 100644 (file)
@@ -1,5 +1,5 @@
 Name: emuld
-Version: 0.9.4
+Version: 0.9.5
 Release: 0
 Summary: Emulator daemon
 License: Apache-2.0
index 4072de4e1a427c5bda5e74928aec1685c4a15b7b..575672934f63ab3bfd07e2d82f158644c57e39a4 100644 (file)
@@ -429,6 +429,22 @@ static void boot_done(void *data, DBusMessage *msg)
     }
 }
 
+static void sig_handler(int signo)
+{
+    LOGINFO("received signal: %d. EXIT!", signo);
+    _exit(0);
+}
+
+static void add_sig_handler(int signo)
+{
+    sighandler_t sig;
+
+    sig = signal(signo, sig_handler);
+    if (sig == SIG_ERR) {
+        LOGERR("adding %d signal failed : %d", signo, errno);
+    }
+}
+
 void* dbus_booting_done_check(void* data)
 {
     E_DBus_Connection *connection;
@@ -462,6 +478,10 @@ void* dbus_booting_done_check(void* data)
     }
     LOGINFO("[DBUS] signal handler is added.");
 
+    add_sig_handler(SIGINT);
+    add_sig_handler(SIGTERM);
+    add_sig_handler(SIGUSR1);
+
     ecore_main_loop_begin();
 
     e_dbus_signal_handler_del(connection, boot_handler);