*信号是由操作系统传递给进程的软件中断。信号也可以由操作系统基于系统或错误条件发出。对某些人来说,存在默认行为(即当进程通过按下 ctrl + C 接收到中断SIGINT信号时,该进程终止),但本教程将演示如何通过定义回调函数来管理该信号处理该信号。在可能的情况下,这允许关闭文件并执行操作并以程序员的方式做出反应 *
信号类型
常用信号
信号 | 值 | 描述 |
---|---|---|
SIGHUP | 1 | 用户终端断开连接,此信号通常表明终止控制进程 |
SIGINT | 2 | 程序中断.(ctrl+c) |
信号处理例子
基本的信号回调函数例子
signalExample.cpp
#include <unistd.h>
#include <stdio.h>
#include <stdlib.h>
#include <signal.h>
// 创建回调函数
void signal_callback_handler(int signum) {
printf("Caught signal %d\n", signum);
}
int main() {
// 设置信号回调函数,运行程序后键入ctrl + C回调signal_callback_handler函数
signal(SIGINT, signal_callback_handler);
while (true) {
printf("Program processing stuff here.\n");
sleep(1);
}
return EXIT_SUCCESS;
}
编译程序后运行,键入ctrl+c后的结果:
Program processing stuff here.
Program processing stuff here.
Caught signal 2