#include #include #include #include /* A test program to check how various signals are being processed. Compile with: cc signals.c -o signals -lpthread */ int main(int argc, char **argv) { sigset_t mask; int signo= 0; time_t now; struct tm bd_time; // broken-down time /* set up signal processing: block signals we want to wait for */ if (sigemptyset(&mask)) sigaddset(&mask, SIGPIPE); sigaddset(&mask, SIGALRM); sigaddset(&mask, SIGUSR1); sigaddset(&mask, SIGHUP); sigaddset(&mask, SIGINT); sigaddset(&mask, SIGQUIT); sigaddset(&mask, SIGTERM); pthread_sigmask(SIG_BLOCK, &mask, NULL); while (1) { sigwait(&mask, &signo); now= time(0); localtime_r(&now, &bd_time); printf("%02d%02d%02d %2d:%02d:%02d ", bd_time.tm_year % 100, bd_time.tm_mon + 1, bd_time.tm_mday, bd_time.tm_hour, bd_time.tm_min, bd_time.tm_sec); printf("signal has come: %i\n", signo); } }