aboutsummaryrefslogtreecommitdiff
path: root/libltrace.c
diff options
context:
space:
mode:
authorPetr Machata <pmachata@redhat.com>2012-04-11 18:01:44 +0200
committerPetr Machata <pmachata@redhat.com>2012-04-11 18:01:44 +0200
commitffe4cd25089680daf1bd1ec0114d177ec3e0cf95 (patch)
tree68cbebfb7e1de8633af2a305985ccb784d20c770 /libltrace.c
parentcec06ec8282c538a40bde968ae36fe8356daffaa (diff)
downloadltrace-ffe4cd25089680daf1bd1ec0114d177ec3e0cf95.tar.gz
Handle detach from sleeping or unresponsive processes
Diffstat (limited to 'libltrace.c')
-rw-r--r--libltrace.c9
1 files changed, 7 insertions, 2 deletions
diff --git a/libltrace.c b/libltrace.c
index 19bfafd..777ad1b 100644
--- a/libltrace.c
+++ b/libltrace.c
@@ -48,9 +48,14 @@ signal_alarm(int sig) {
}
static void
-signal_exit(int sig) {
- exiting = 1;
+signal_exit(int sig)
+{
debug(1, "Received interrupt signal; exiting...");
+ if (exiting != 0)
+ return;
+
+ exiting = 1 + !!os_ltrace_exiting_sighandler();
+
signal(SIGINT, SIG_IGN);
signal(SIGTERM, SIG_IGN);
signal(SIGALRM, signal_alarm);