diff options
| author | Steven Rostedt <srostedt@redhat.com> | 2010-06-04 14:04:41 -0400 |
|---|---|---|
| committer | Steven Rostedt <rostedt@goodmis.org> | 2010-06-07 10:04:53 -0400 |
| commit | c3fb083d902e20a764a8d46a1fcfaede67df570b (patch) | |
| tree | ffcb34f9ffdf205cc2f1a87d4067489423612bb9 | |
| parent | 08e77f6f601736df1a53c33c4e13bc3fb2e98af4 (diff) | |
trace-cmd: Add signal handler for SIGINT in trace-cmd read
When python plugins are loaded, they override SIGINT, and it becomes
quite annoying that you can't stop a print with Ctrl-C. By adding
a signal handler for SIGINT, we can stop the output with Ctrl-C.
Signed-off-by: Steven Rostedt <rostedt@goodmis.org>
| -rw-r--r-- | trace-read.c | 9 |
1 files changed, 9 insertions, 0 deletions
diff --git a/trace-read.c b/trace-read.c index bbe34ba..a5c27e2 100644 --- a/trace-read.c +++ b/trace-read.c | |||
| @@ -32,6 +32,7 @@ | |||
| 32 | #include <sys/mman.h> | 32 | #include <sys/mman.h> |
| 33 | #include <pthread.h> | 33 | #include <pthread.h> |
| 34 | #include <fcntl.h> | 34 | #include <fcntl.h> |
| 35 | #include <signal.h> | ||
| 35 | #include <unistd.h> | 36 | #include <unistd.h> |
| 36 | #include <ctype.h> | 37 | #include <ctype.h> |
| 37 | #include <errno.h> | 38 | #include <errno.h> |
| @@ -553,6 +554,12 @@ struct tracecmd_input *read_trace_header(void) | |||
| 553 | return tracecmd_alloc_fd(input_fd); | 554 | return tracecmd_alloc_fd(input_fd); |
| 554 | } | 555 | } |
| 555 | 556 | ||
| 557 | static void sig_end(int sig) | ||
| 558 | { | ||
| 559 | fprintf(stderr, "trace-cmd: Received SIGINT\n"); | ||
| 560 | exit(0); | ||
| 561 | } | ||
| 562 | |||
| 556 | void trace_report (int argc, char **argv) | 563 | void trace_report (int argc, char **argv) |
| 557 | { | 564 | { |
| 558 | struct tracecmd_input *handle; | 565 | struct tracecmd_input *handle; |
| @@ -574,6 +581,8 @@ void trace_report (int argc, char **argv) | |||
| 574 | if (strcmp(argv[1], "report") != 0) | 581 | if (strcmp(argv[1], "report") != 0) |
| 575 | usage(argv); | 582 | usage(argv); |
| 576 | 583 | ||
| 584 | signal(SIGINT, sig_end); | ||
| 585 | |||
| 577 | for (;;) { | 586 | for (;;) { |
| 578 | int option_index = 0; | 587 | int option_index = 0; |
| 579 | static struct option long_options[] = { | 588 | static struct option long_options[] = { |
