#include #include #include #include #include #include static void signal_handler(int sig_num) { printf("signal handle %d\n", sig_num); } static const int kSigLen = 14; int main() { const int kSignals[] = { SIGHUP, SIGINT, SIGQUIT, SIGILL, SIGABRT, SIGBUS, SIGFPE, SIGUSR1, SIGUSR2, SIGPIPE, SIGALRM, SIGTERM, SIGCHLD, SIGPOLL, }; struct sigaction sa; bzero(&sa, sizeof(struct sigaction)); sa.sa_handler = signal_handler; sa.sa_flags = SA_RESTART; for (int i = 0; i < kSigLen; ++i) { int sig_num = kSignals[i]; int ret = sigaction(sig_num, &sa, NULL); printf("register signal handler for %d\n", sig_num); } const int pid = getpid(); printf("pid: %d\n", pid); while (1) { struct timespec ts = { .tv_sec = 10, .tv_nsec = 0}; int ret = nanosleep(&ts, NULL); } return 0; }