[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [Xen-changelog] [xen-unstable] xentop: Flush batch output on SIGTERM or SIGINT.
# HG changeset patch # User Keir Fraser <keir@xxxxxxxxxxxxx> # Date 1191327565 -3600 # Node ID 818cc26e3926614d0e9c2431c746a56bb645337d # Parent d9039e8103e4901f4b509fbeeba011d73885bfba xentop: Flush batch output on SIGTERM or SIGINT. Signed-off-by: INAKOSHI Hiroya <inakoshi.hiroya@xxxxxxxxxxxxxx> --- tools/xenstat/xentop/xentop.c | 32 ++++++++++++++++++++++++-------- 1 files changed, 24 insertions(+), 8 deletions(-) diff -r d9039e8103e4 -r 818cc26e3926 tools/xenstat/xentop/xentop.c --- a/tools/xenstat/xentop/xentop.c Tue Oct 02 10:53:14 2007 +0100 +++ b/tools/xenstat/xentop/xentop.c Tue Oct 02 13:19:25 2007 +0100 @@ -28,6 +28,7 @@ #include <sys/time.h> #include <time.h> #include <unistd.h> +#include <signal.h> #if defined(__linux__) #include <linux/kdev_t.h> #endif @@ -1011,6 +1012,13 @@ static void top(void) free(domains); } +static int signal_exit; + +void signal_exit_handler(int sig) +{ + signal_exit = 1; +} + int main(int argc, char **argv) { int opt, optind = 0; @@ -1102,14 +1110,22 @@ int main(int argc, char **argv) ch = getch(); } while (handle_key(ch)); } else { - do { - gettimeofday(&curtime, NULL); - top(); - oldtime = curtime; - if ((!loop) && !(--iterations)) - break; - sleep(delay); - } while (1); + struct sigaction sa = { + .sa_handler = signal_exit_handler, + .sa_flags = 0 + }; + sigemptyset(&sa.sa_mask); + sigaction(SIGINT, &sa, NULL); + sigaction(SIGTERM, &sa, NULL); + + do { + gettimeofday(&curtime, NULL); + top(); + oldtime = curtime; + if ((!loop) && !(--iterations)) + break; + sleep(delay); + } while (!signal_exit); } /* Cleanup occurs in cleanup(), so no work to do here. */ _______________________________________________ Xen-changelog mailing list Xen-changelog@xxxxxxxxxxxxxxxxxxx http://lists.xensource.com/xen-changelog
|
Lists.xenproject.org is hosted with RackSpace, monitoring our |