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

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

参考C/C++ signal handling

信号类型

常用信号


信号描述
SIGHUP1用户终端断开连接,此信号通常表明终止控制进程
SIGINT2程序中断.(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

待更新

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值