#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,主循环退出。