#define _XOPEN_SOURCE 700 #include #include #include #include void sigint_handler(int signum) { printf("捕捉到 SIGINT 信号,程序即将退出。\n"); exit(0); } int main() { struct sigaction sa; sa.sa_handler = sigint_handler; sigemptyset(&sa.sa_mask); sigaddset(&sa.sa_mask, SIGINT); sigfillset(&sa.sa_mask); // sa.sa_flags = 0; sa.sa_flags |= SA_RESETHAND; // 重置默认的信号处理行为 if (sigaction(SIGINT, &sa, NULL) == -1) { perror("sigaction"); exit(1); } printf("程序运行中,按 Ctrl+C 发送 SIGINT 信号退出。\n"); while (1) { // 程序持续执行 sleep(1); } return 0; }