diff options
Diffstat (limited to 'libbb')
-rw-r--r-- | libbb/signals.c | 14 |
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 */ +} |