C 标准库 - <signal.h>

C 语言 signal() 函数用于为指定信号注册处理函数,信号到来时自动调用。

原型

void (*signal(int sig, void (*handler)(int)))(int);

handler 可以是自定义函数、SIG_IGN(忽略)或 SIG_DFL(默认行为)。

参数

  • sig - 信号编号;
  • handler - 处理函数指针、SIG_IGN 或 SIG_DFL。

示例

#include <stdio.h>
#include <signal.h>

void handler(int sig) {
    printf("收到信号 %d,程序退出\n", sig);
    exit(0);
}

int main() {
    signal(SIGINT, handler);  // 捕获 Ctrl+C
    printf("按 Ctrl+C 试试\n");
    while (1);  // 死循环
    return 0;
}

注意事项

信号处理函数应保持简单(避免调用非异步安全函数),否则可能死锁或崩溃。