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;
} 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_bitrate_len;
static int currmax;
@ -124,7 +126,8 @@ void print_usage(char *prg)
void sigterm(int signo)
{
exit(0);
running = 0;
signal_num = signo;
}
void printstats(int signo)
@ -382,7 +385,7 @@ int main(int argc, char **argv)
if (redraw)
printf("%s", CLR_SCREEN);
while (1) {
while (running) {
FD_ZERO(&rdfs);
for (i=0; i<currmax; i++)
@ -425,5 +428,8 @@ int main(int argc, char **argv)
for (i=0; i<currmax; i++)
close(s[i]);
if (signal_num)
return 128 + signal_num;
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;
static volatile int running = 1;
static volatile sig_atomic_t signal_num;
static void print_usage(void)
{
@ -169,6 +170,7 @@ static void print_usage(void)
static void sigterm(int signo)
{
running = 0;
signal_num = signo;
}
static int idx2dindex(int ifidx, int socket)
@ -861,5 +863,8 @@ int main(int argc, char **argv)
if (log)
fclose(logfile);
if (signal_num)
return 128 + signal_num;
return 0;
}

View File

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

View File

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

View File

@ -84,6 +84,7 @@ static int max_devname_len;
extern int optind, opterr, optopt;
static volatile int running = 1;
static volatile sig_atomic_t signal_num;
void print_usage(char *prg)
{
@ -164,7 +165,8 @@ void childdied(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(accsocket);
if (signal_num)
return 128 + signal_num;
return 0;
}

View File

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

View File

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

View File

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

View File

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

View File

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