Merge pull request #416 from yashi/exit-status-when-signaled

Exit status when signaled
pull/419/head
Marc Kleine-Budde 2023-03-22 16:37:40 +01:00 committed by GitHub
commit c8fef7d60d
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
10 changed files with 55 additions and 19 deletions

View File

@ -82,6 +82,8 @@ static struct {
unsigned int recv_bits_dbitrate; unsigned int recv_bits_dbitrate;
} stat[MAXSOCK+1]; } stat[MAXSOCK+1];
static volatile int running = 1;
static volatile sig_atomic_t signal_num;
static int max_devname_len; /* to prevent frazzled device name output */ static int max_devname_len; /* to prevent frazzled device name output */
static int max_bitrate_len; static int max_bitrate_len;
static int currmax; static int currmax;
@ -124,7 +126,8 @@ void print_usage(char *prg)
void sigterm(int signo) void sigterm(int signo)
{ {
exit(0); running = 0;
signal_num = signo;
} }
void printstats(int signo) void printstats(int signo)
@ -382,7 +385,7 @@ int main(int argc, char **argv)
if (redraw) if (redraw)
printf("%s", CLR_SCREEN); printf("%s", CLR_SCREEN);
while (1) { while (running) {
FD_ZERO(&rdfs); FD_ZERO(&rdfs);
for (i=0; i<currmax; i++) for (i=0; i<currmax; i++)
@ -425,5 +428,8 @@ int main(int argc, char **argv)
for (i=0; i<currmax; i++) for (i=0; i<currmax; i++)
close(s[i]); close(s[i]);
if (signal_num)
return 128 + signal_num;
return 0; return 0;
} }

View File

@ -118,6 +118,7 @@ static const char extra_m_info[4][4] = { "- -", "B -", "- E", "B E" };
extern int optind, opterr, optopt; extern int optind, opterr, optopt;
static volatile int running = 1; static volatile int running = 1;
static volatile sig_atomic_t signal_num;
static void print_usage(void) static void print_usage(void)
{ {
@ -169,6 +170,7 @@ static void print_usage(void)
static void sigterm(int signo) static void sigterm(int signo)
{ {
running = 0; running = 0;
signal_num = signo;
} }
static int idx2dindex(int ifidx, int socket) static int idx2dindex(int ifidx, int socket)
@ -861,5 +863,8 @@ int main(int argc, char **argv)
if (log) if (log)
fclose(logfile); fclose(logfile);
if (signal_num)
return 128 + signal_num;
return 0; return 0;
} }

View File

@ -584,10 +584,8 @@ int main(int argc, char *argv[])
close(sockfd); close(sockfd);
if (exit_sig) { if (exit_sig)
signal(exit_sig, SIG_DFL); return 128 + exit_sig;
kill(getpid(), exit_sig);
}
return err; return err;
} }

View File

@ -91,6 +91,7 @@
extern int optind, opterr, optopt; extern int optind, opterr, optopt;
static volatile int running = 1; static volatile int running = 1;
static volatile sig_atomic_t signal_num;
static unsigned long long enobufs_count; static unsigned long long enobufs_count;
static bool ignore_enobufs; static bool ignore_enobufs;
static bool use_so_txtime; static bool use_so_txtime;
@ -220,6 +221,7 @@ static void print_usage(char *prg)
static void sigterm(int signo) static void sigterm(int signo)
{ {
running = 0; running = 0;
signal_num = signo;
} }
static int setsockopt_txtime(int fd) static int setsockopt_txtime(int fd)
@ -887,5 +889,8 @@ int main(int argc, char **argv)
close(s); close(s);
if (signal_num)
return 128 + signal_num;
return 0; return 0;
} }

View File

@ -84,6 +84,7 @@ static int max_devname_len;
extern int optind, opterr, optopt; extern int optind, opterr, optopt;
static volatile int running = 1; static volatile int running = 1;
static volatile sig_atomic_t signal_num;
void print_usage(char *prg) void print_usage(char *prg)
{ {
@ -164,7 +165,8 @@ void childdied(int i)
*/ */
void shutdown_gra(int i) void shutdown_gra(int i)
{ {
exit(0); running = 0;
signal_num = i;
} }
@ -433,5 +435,9 @@ int main(int argc, char **argv)
close(s[i]); close(s[i]);
close(accsocket); close(accsocket);
if (signal_num)
return 128 + signal_num;
return 0; return 0;
} }

View File

@ -33,6 +33,7 @@ extern int optind, opterr, optopt;
static int s = -1; static int s = -1;
static bool running = true; static bool running = true;
static volatile sig_atomic_t signal_num;
static bool infinite = true; static bool infinite = true;
static unsigned int drop_until_quit; static unsigned int drop_until_quit;
static unsigned int drop_count; static unsigned int drop_count;
@ -73,6 +74,7 @@ static void print_usage(char *prg)
static void sig_handler(int signo) static void sig_handler(int signo)
{ {
running = false; running = false;
signal_num = signo;
} }
@ -367,5 +369,8 @@ int main(int argc, char **argv)
else else
do_send(); do_send();
if (signal_num)
return 128 + signal_num;
exit(EXIT_SUCCESS); exit(EXIT_SUCCESS);
} }

View File

@ -124,6 +124,7 @@ extern int optind, opterr, optopt;
static int idx; static int idx;
static int running = 1; static int running = 1;
static volatile sig_atomic_t signal_num;
static int clearscreen = 1; static int clearscreen = 1;
static int print_eff; static int print_eff;
static int print_ascii = 1; static int print_ascii = 1;
@ -243,6 +244,7 @@ void print_usage(char *prg)
void sigterm(int signo) void sigterm(int signo)
{ {
running = 0; running = 0;
signal_num = signo;
} }
int main(int argc, char **argv) int main(int argc, char **argv)
@ -428,6 +430,10 @@ int main(int argc, char **argv)
printf("%s", CSR_SHOW); /* show cursor */ printf("%s", CSR_SHOW); /* show cursor */
close(s); close(s);
if (signal_num)
return 128 + signal_num;
return ret; return ret;
} }

View File

@ -79,6 +79,7 @@
#define BUF_LEN (MAX_PDU_LENGTH + 1) #define BUF_LEN (MAX_PDU_LENGTH + 1)
static volatile int running = 1; static volatile int running = 1;
static volatile sig_atomic_t signal_num;
static void fake_syslog(int priority, const char *format, ...) static void fake_syslog(int priority, const char *format, ...)
{ {
@ -130,6 +131,7 @@ void print_usage(char *prg)
void sigterm(int signo) void sigterm(int signo)
{ {
running = 0; running = 0;
signal_num = signo;
} }
int main(int argc, char **argv) int main(int argc, char **argv)
@ -403,5 +405,9 @@ int main(int argc, char **argv)
close(s); close(s);
close(t); close(t);
if (signal_num)
return 128 + signal_num;
return EXIT_SUCCESS; return EXIT_SUCCESS;
} }

View File

@ -110,7 +110,7 @@ static struct {
uint64_t name; uint64_t name;
uint8_t current_sa; uint8_t current_sa;
uint8_t last_sa; uint8_t last_sa;
int sig_term; volatile sig_atomic_t signal_num;
int sig_alrm; int sig_alrm;
int sig_usr1; int sig_usr1;
int state; int state;
@ -337,7 +337,7 @@ static void sighandler(int sig, siginfo_t *info, void *vp)
switch (sig) { switch (sig) {
case SIGINT: case SIGINT:
case SIGTERM: case SIGTERM:
s.sig_term = 1; s.signal_num = sig;
break; break;
case SIGALRM: case SIGALRM:
s.sig_alrm = 1; s.sig_alrm = 1;
@ -531,7 +531,7 @@ int main(int argc, char *argv[])
install_signal(SIGUSR1); install_signal(SIGUSR1);
install_signal(SIGUSR2); install_signal(SIGUSR2);
while (!s.sig_term) { while (!s.signal_num) {
if (s.sig_usr1) { if (s.sig_usr1) {
s.sig_usr1 = 0; s.sig_usr1 = 0;
dump_status(); dump_status();
@ -648,6 +648,9 @@ done:
fprintf(stderr, "- shutdown\n"); fprintf(stderr, "- shutdown\n");
claim_address(sock, s.name, J1939_IDLE_ADDR); claim_address(sock, s.name, J1939_IDLE_ADDR);
save_cache(); save_cache();
if (s.signal_num)
return 128 + s.signal_num;
return 0; return 0;
} }

View File

@ -93,7 +93,7 @@ void print_usage(char *prg)
} }
static int slcand_running; static int slcand_running;
static int exit_code; static volatile sig_atomic_t exit_code;
static char ttypath[TTYPATH_LENGTH]; static char ttypath[TTYPATH_LENGTH];
static void child_handler(int signum) static void child_handler(int signum)
@ -104,16 +104,12 @@ static void child_handler(int signum)
/* exit parent */ /* exit parent */
exit(EXIT_SUCCESS); exit(EXIT_SUCCESS);
break; break;
case SIGINT:
case SIGTERM:
case SIGALRM: case SIGALRM:
case SIGCHLD: case SIGCHLD:
syslogger(LOG_NOTICE, "received signal %i on %s", signum, ttypath); syslogger(LOG_NOTICE, "received signal %i on %s", signum, ttypath);
exit_code = EXIT_FAILURE; exit_code = 128 + signum;
slcand_running = 0;
break;
case SIGINT:
case SIGTERM:
syslogger(LOG_NOTICE, "received signal %i on %s", signum, ttypath);
exit_code = EXIT_SUCCESS;
slcand_running = 0; slcand_running = 0;
break; break;
} }