int handle_signal(void) { int rc=-1; struct signalfd_siginfo info; if (read(cfg.signal_fd, &info, sizeof(info)) != sizeof(info)) { fprintf(stderr,"failed to read signal fd buffer\n"); goto done; } switch(info.ssi_signo) { case SIGALRM: cfg.ticks++; periodic_work(); alarm(1); break; default: fprintf(stderr,"got signal %d\n", info.ssi_signo); goto done; break; } rc = 0; done: return rc; }
int handle_signal() { int rc=-1; struct signalfd_siginfo info; if (read(CF.signal_fd, &info, sizeof(info)) != sizeof(info)) { fprintf(stderr,"failed to read signal fd buffer\n"); goto done; } switch(info.ssi_signo) { case SIGALRM: if (CF.shutdown) goto done; CF.now = time(NULL); if ((++CF.ticks % STATS_INTERVAL) == 0) periodic_work(); alarm(1); break; default: fprintf(stderr,"got signal %d\n", info.ssi_signo); goto done; break; } rc = 0; done: return rc; }