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) | |||
| 78 | sigemptyset(&ss); | 78 | sigemptyset(&ss); |
| 79 | sigsuspend(&ss); | 79 | sigsuspend(&ss); |
| 80 | } | 80 | } |
| 81 | |||
| 82 | /* Assuming the sig is fatal */ | ||
| 83 | void kill_myself_with_sig(int sig) | ||
| 84 | { | ||
| 85 | sigset_t set; | ||
| 86 | |||
| 87 | signal(sig, SIG_DFL); | ||
| 88 | |||
| 89 | sigemptyset(&set); | ||
| 90 | sigaddset(&set, sig); | ||
| 91 | sigprocmask(SIG_UNBLOCK, &set, NULL); | ||
| 92 | raise(sig); | ||
| 93 | _exit(1); /* Should not reach it */ | ||
| 94 | } | ||
