C/C++ 信号处理(signal handling)

*信号是由操作系统传递给进程的软件中断。信号也可以由操作系统基于系统或错误条件发出。对某些人来说,存在默认行为(即当进程通过按下 ctrl + C 接收到中断SIGINT信号时,该进程终止),但本教程将演示如何通过定义回调函数来管理该信号处理该信号。在可能的情况下,这允许关闭文件并执行操作并以程序员的方式做出反应 *

参考C/C++ signal handling

信号类型

常用信号


信号 描述
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

待更新

猜你喜欢

转载自blog.csdn.net/qq_31261509/article/details/82781684