linux学习28 信号处理

#include<iostream>
#include<string>
#include<unistd.h>
#include<signal.h>
#include<sys/types.h>
#include<stdlib.h>
// 定义一个全局变量cnt,用于记录循环次数
int cnt =0;

/**
 * @brief 处理信号的函数
 * 
 * 当程序接收到SIGALRM信号时,会调用此函数进行处理。
 * 主要功能是打印接收到的信号并退出程序。
 * 
 * @param sig 接收到的信号编号
 */
void catchsig(int sig)
{
    std::cout<<"catchsig"<<sig<<std::endl;
    exit(0);
}

/**
 * @brief 程序的主入口
 * 
 * 该函数首先打印命令行参数,然后设置SIGALRM信号的处理函数,
 * 并在1秒后触发该信号,从而实现程序的定时退出。
 * 
 * @param argc 命令行参数的数量
 * @param argv 命令行参数的字符串数组
 * @return int 程序退出状态
 */
int main(int argc, char* argv[])
{
    // 遍历并打印命令行参数
    for(int i = 0; i < argc;i++)
    {
        std::cout << argv[i] << std::endl;
    }

    // 设置SIGALRM信号的处理函数为catchsig
    signal(SIGALRM,catchsig);
    
    // 在1秒后触发SIGALRM信号
    alarm(1);

    // 初始化一个局部变量cnt,注释掉使其失效
   //   int cnt = 0;

    // 无限循环,等待信号处理
    while (true)
    {
        // 打印循环次数,注释掉使其失效
        //std::cout<<"cnt"<<cnt++<<std::endl;
        
    }
    

    return 0;
}

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值