EXQ_信号相关函数

本文详细解析了C/C++编程中信号处理的关键函数kill(), raise(), signal()的用法,以及定时器alarm()和暂停函数pause()的作用。通过实例演示如何绑定信号处理函数和实现进程间通信。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1.发送信号kill()raise()
    int kill(pid_t pid, int sig);
    功能:发送sig这个信号给pid这个进程
    参数:@pid 指定要接收信号的进程
          @sig 指定发送信号的编号
    返回:成功0,失败-1并设置errno
    
    int raise(int sig);
    功能:发送sig这个信号给自己
    参数:@sig 指定发送信号的编号
    返回:成功0,失败非0
    
2.信号处理函数
    typedef void (*sighandler_t)(int); //定义sighandler为函数指针类型,指向形如 void func(int)类型的函数
    //按照常规理解,函数指针的类型定义可能误写成:typedef void (*)(int)  sighandler_t;
    sighandler_t signal(int signum, sighandler_t handler);
    功能:预先将signum信号和函数handler进行绑定
    参数:@signum 信号的编号
          @handler 函数指针 —— 记录信号处理函数的首地址,handler可以选填一些宏:
            SIG_DFL :按缺省方式处理
            SIG_IGN :按照忽略方式处理
            <func> : 用户自定义函数
    返回:成功返回信号signum原先绑定函数的入口地址,失败返回SIG_ERR


3.定时alarm()—— 让程序实现定时功能
    unsigned int alarm(unsigned int seconds);
    功能:定一个时长为seconds秒的闹钟,当定时时间到就发送SIGALRM信号
    返回:返回上一个定时剩余的时间,如果之前没有定时返回0
    

4.暂定函数pause()
    int pause(void);
    功能:阻塞当前进程,等信号处理函数自动结束

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值