diff options
author | Denis Vlasenko <vda.linux@googlemail.com> | 2008-02-24 13:36:01 +0000 |
---|---|---|
committer | Denis Vlasenko <vda.linux@googlemail.com> | 2008-02-24 13:36:01 +0000 |
commit | 400d8bb45ee25ce226bb343a3dfaab84e6d3a8e1 (patch) | |
tree | aa3cdc9a663f1ac2467803fc215899d86ed1db74 /libbb | |
parent | d553faf5a53cf9d72e16fc789451a92a797f1b70 (diff) | |
download | busybox-w32-400d8bb45ee25ce226bb343a3dfaab84e6d3a8e1.tar.gz busybox-w32-400d8bb45ee25ce226bb343a3dfaab84e6d3a8e1.tar.bz2 busybox-w32-400d8bb45ee25ce226bb343a3dfaab84e6d3a8e1.zip |
less,klogd,syslogd,nc,tcpudp: exit on signal by killing itself, not exit(1)
*: minor shrink
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 | } | ||