[Toybox] [PATCH] reboot, init: use SIGTERM instead of SIGINT

Isaac Dunham ibid.ag at gmail.com
Tue Aug 18 23:18:54 PDT 2015


I discovered that the reason SIGINT causes a reboot on sysvinit is that
it's how the kernel signals that ctrl-alt-delete has been pressed;
thus, setting it as the signal for reboot prevents ctrlaltdel scripts
from working.
SIGTERM is what Busybox uses, so we might as well be compatible.
---
 toys/other/reboot.c | 2 +-
 toys/pending/init.c | 3 +--
 2 files changed, 2 insertions(+), 3 deletions(-)

diff --git a/toys/other/reboot.c b/toys/other/reboot.c
index 1e8f5e9..15eea28 100644
--- a/toys/other/reboot.c
+++ b/toys/other/reboot.c
@@ -25,7 +25,7 @@ config REBOOT
 void reboot_main(void)
 {
   int types[] = {RB_AUTOBOOT, RB_HALT_SYSTEM, RB_POWER_OFF},
-      sigs[] = {SIGINT, SIGUSR1, SIGUSR2}, idx;
+      sigs[] = {SIGTERM, SIGUSR1, SIGUSR2}, idx;
 
   if (!(toys.optflags & FLAG_n)) sync();
 
diff --git a/toys/pending/init.c b/toys/pending/init.c
index d9e78ff..64b6148 100644
--- a/toys/pending/init.c
+++ b/toys/pending/init.c
@@ -348,7 +348,6 @@ static void halt_poweroff_reboot_handler(int sig_no)
       reboot_magic_no=RB_POWER_OFF;
       break;
     case SIGTERM:  
-    case SIGINT:
       error_msg("Requesting system reboot");
       reboot_magic_no=RB_AUTOBOOT;
       break;
@@ -464,7 +463,6 @@ void init_main(void)
   xsignal(SIGUSR1, halt_poweroff_reboot_handler);//halt
   xsignal(SIGUSR2, halt_poweroff_reboot_handler);//poweroff
   xsignal(SIGTERM, halt_poweroff_reboot_handler);//reboot
-  xsignal(SIGINT, halt_poweroff_reboot_handler);//reboot
   xsignal(SIGQUIT, restart_init_handler);//restart init
   memset(&sig_act, 0, sizeof(sig_act));
   sigfillset(&sig_act.sa_mask);
@@ -473,6 +471,7 @@ void init_main(void)
   sigaction(SIGTSTP, &sig_act, NULL);
   memset(&sig_act, 0, sizeof(sig_act));
   sig_act.sa_handler = catch_signal;
+  sigaction(SIGINT, &sig_act, NULL);  
   sigaction(SIGHUP, &sig_act, NULL);  
   run_action_from_list(SYSINIT);
   check_if_pending_signals();
-- 
2.5.0



More information about the Toybox mailing list