summaryrefslogtreecommitdiff
path: root/libbb/signals.c
diff options
context:
space:
mode:
Diffstat (limited to 'libbb/signals.c')
-rw-r--r--libbb/signals.c14
1 files changed, 14 insertions, 0 deletions
diff --git a/libbb/signals.c b/libbb/signals.c
index f7e4908e7..b46b595da 100644
--- a/libbb/signals.c
+++ b/libbb/signals.c
@@ -78,3 +78,17 @@ void sig_pause(void)
sigemptyset(&ss);
sigsuspend(&ss);
}
+
+/* Assuming the sig is fatal */
+void kill_myself_with_sig(int sig)
+{
+ sigset_t set;
+
+ signal(sig, SIG_DFL);
+
+ sigemptyset(&set);
+ sigaddset(&set, sig);
+ sigprocmask(SIG_UNBLOCK, &set, NULL);
+ raise(sig);
+ _exit(1); /* Should not reach it */
+}