Signal Handler Done Right volatile sig_atomic_t quit = 0, reconfig = 0, sigchld = 0; void sighdlr(int sig) { switch (sig) { case SIGTERM: case SIGINT: quit = 1; break; case SIGCHLD: sigchld = 1; break; case SIGHUP: reconfig = 1; break; } } signal(SIGCHLD, sighdlr); signal(SIGTERM, sighdlr); signal(SIGINT, sighdlr); signal(SIGHUP, sighdlr);