#include <stdio.h>
#include <signal.h>
#include <sys/time.h>
static volatile int running = 1; // static 文件作用域,volatile 编译器不会对它做任何优化
static void on_sig(int s)
{
    (void)s;
    printf("触发系统信号,信号类型为SIGINT或SIGTERM");
    running = 0;
}

int main(void)
{
    signal(SIGINT, on_sig); //绑定信号
    signal(SIGTERM, on_sig);//绑定信号
    while(running){
        printf("运行中-----");
        usleep(5000);
    }
}

SIGINT(终端 Ctrl+C)和 SIGTERM(kill 命令)捕获后将 running 置 0,主循环退出。