Is it worth triggering this on SIGINFO? I use that often with ping(1).
Index: tcpbench.c
===================================================================
RCS file: /cvs/src/usr.bin/tcpbench/tcpbench.c,v
retrieving revision 1.62
diff -u -p -r1.62 tcpbench.c
--- tcpbench.c 2 May 2020 22:00:29 -0000 1.62
+++ tcpbench.c 3 May 2020 16:24:05 -0000
@@ -213,6 +213,10 @@ signal_handler(int sig, short event, voi
* signal handler rules don't apply, libevent decouples for us
*/
switch (sig) {
+ case SIGINFO:
+ printf("\n");
+ wrapup(-1);
+ break;
case SIGINT:
printf("\n");
wrapup(0);
@@ -1109,7 +1113,8 @@ wrapup(int err)
summary_display();
}
- exit(err);
+ if (err != -1)
+ exit(err);
}
int
@@ -1126,7 +1131,7 @@ main(int argc, char **argv)
int family = PF_UNSPEC;
struct nlist nl[] = { { "_tcbtable" }, { "" } };
const char *host = NULL, *port = DEFAULT_PORT, *srcbind = NULL;
- struct event ev_sigint, ev_sigterm, ev_sighup, ev_progtimer;
+ struct event ev_sigint, ev_sigterm, ev_sighup, ev_siginfo, ev_progtimer;
struct sockaddr_un sock_un;
/* Init world */
@@ -1362,9 +1367,11 @@ main(int argc, char **argv)
signal_set(&ev_sigterm, SIGTERM, signal_handler, NULL);
signal_set(&ev_sighup, SIGHUP, signal_handler, NULL);
signal_set(&ev_sigint, SIGINT, signal_handler, NULL);
+ signal_set(&ev_siginfo, SIGINFO, signal_handler, NULL);
signal_add(&ev_sigint, NULL);
signal_add(&ev_sigterm, NULL);
signal_add(&ev_sighup, NULL);
+ signal_add(&ev_siginfo, NULL);
signal(SIGPIPE, SIG_IGN);
if (UDP_MODE) {