spdk_top: Handle signals to exit gracefully

W/o handling signals we end up with messed up
consol after spdk_top exited because of a signal
interruption.

Signed-off-by: Maciej Szwed <maciej.szwed@intel.com>
Change-Id: I5d70d43c7a61d94c071451fa2f3f86f700dad068
Reviewed-on: https://review.spdk.io/gerrit/c/spdk/spdk/+/1974
Community-CI: Mellanox Build Bot
Tested-by: SPDK CI Jenkins <sys_sgci@intel.com>
Reviewed-by: Jim Harris <james.r.harris@intel.com>
Reviewed-by: Ben Walker <benjamin.walker@intel.com>
This commit is contained in:
Maciej Szwed 2020-04-22 15:55:52 +02:00 committed by Jim Harris
parent 66b777e605
commit 296303037d

View File

@ -1857,6 +1857,14 @@ draw_interface(void)
doupdate();
}
static void finish(int sig)
{
/* End ncurses mode */
endwin();
spdk_jsonrpc_client_close(g_rpc_client);
exit(0);
}
static void
setup_ncurses(void)
{
@ -1875,6 +1883,11 @@ setup_ncurses(void)
printf("Your terminal does not support color\n");
exit(1);
}
/* Handle signals to exit gracfully cleaning up ncurses */
(void) signal(SIGINT, finish);
(void) signal(SIGPIPE, finish);
(void) signal(SIGABRT, finish);
}
static void
@ -1916,10 +1929,7 @@ int main(int argc, char **argv)
draw_interface();
show_stats();
/* End curses mode */
endwin();
spdk_jsonrpc_client_close(g_rpc_client);
finish(0);
return (0);
}