aboutsummaryrefslogtreecommitdiff
path: root/libbb
diff options
context:
space:
mode:
authorDenis Vlasenko <vda.linux@googlemail.com>2008-02-24 13:36:01 +0000
committerDenis Vlasenko <vda.linux@googlemail.com>2008-02-24 13:36:01 +0000
commit400d8bb45ee25ce226bb343a3dfaab84e6d3a8e1 (patch)
treeaa3cdc9a663f1ac2467803fc215899d86ed1db74 /libbb
parentd553faf5a53cf9d72e16fc789451a92a797f1b70 (diff)
downloadbusybox-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.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)
78 sigemptyset(&ss); 78 sigemptyset(&ss);
79 sigsuspend(&ss); 79 sigsuspend(&ss);
80} 80}
81
82/* Assuming the sig is fatal */
83void 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}