捕捉Unix信号

  1. 定义信号处理函数
  2. 设置信号处理
    struct sigaction sa;
    
    // 清空信号掩码,处理信号时不阻塞其他信号
    sigemptyset(&sa.sa_mask);
    
    // 设置信号处理函数
    sa.sa_handler = signal_handler;
    
    // 设置信号处理标志(可选)
    sa.sa_flags = SA_RESTART;  // 自动重启被信号中断的系统调用
    
    // 应用信号处理设置
    sigaction(SIGINT, &sa, nullptr);

    经过这两个步骤,当unix内核发出信号的时候,就可以进行捕获处理。

由于信号是异步发生,当qt中使用捕捉信号时,需要和QSocketNotifier结合使用,保证线程安全。

  1. 创建套接字。
  2. 创建QSocketNotifier对象,对套接字某个行为进行监听。
    QSocketNotifier(qintptr socket, QSocketNotifier::Type type, QObject *parent = nullptr)
  3. 创建信号与槽的连接,当监听对象行为发生变化时,发出activated信号。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值