Ubuntu定时器配合捕捉信号

目录

setitimer函数(定时器)

功能

头文件

参数介绍

第一个which参数

第二个struct itimerval参数

第三个struct itimerval参数

返回值

官方说明

signal函数 

头文件

参数介绍

第一个signum参数

第二个handler参数

返回值

官方说明

代码如下

        头文件和函数部分

        主函数部分

         运行结果

总结


setitimer函数(定时器)

功能

设置定时器(闹钟)。可代替alarm函数。精度微秒us,可以实现周期定时。

头文件

#include<sys/time.h>

参数介绍

int setitimer(int which,const struct itimerval *new_value,struct itimerval *old_value)

第一个which参数

指定定时方式

1)自然定时:ITIMER_REAL - 14) SIGALRM计算自然时间

2)虚拟空间计时(用户空间):工T工MER_VIRTUAL - 26) SIGVTALRM︰只计算进程占用 cpu的时间)

3)运行时计时(用户+内核):ITIMER_PROF - 27) STGPROF计算占用cpu及执行系统调用的时间new_value: struct itimerva1,负责设定timeout时问

第二个struct itimerval参数

struct itimerva1 {

struct timerval it_interval; //闹钟触发周期

struct timerva1 it_value;/l/闹钟触发时间

};

第三个struct itimerval参数

struct itimerval{
long tv_sec;          //秒
long tv_usec;        //微秒
}

返回值

        成功:0

        失败:-1

官方说明

 


 

signal函数 

typedef void(*sighandler_t(int) ;

头文件

#include<signal.h>

参数介绍

sighandler_t signa1(int signum,sighandler_t handler);

第一个signum参数

        信号的编号,建议使用宏定义,因为系统不一样的数值可能也不一样。

        可以通过命令:kill -l(l为字母L)查询信号编号

第二个handler参数

        取值有3种情况:
        SIG_ IGN: 忽略该信号
        SIG_ DFL: 执行系统默认动作
        信号处理函数名:自定义信号处理函数,如: func()
        回调函数的定义如下:
        void func(int signo)
        {
        // signo为触发的信号,为signal()第一个参数的值
        }

返回值

成功:第一次返回NULL, 下一 次返回此信号上-次注册的信号处理函数的地址。如果需要使用此返回值,必须在前面先声明此函数指针的类型。
失败:返回SIG_ ERR

官方说明

 


 

代码如下

        头文件和函数部分

        主函数部分

 

         运行结果

总结

实际运用场景:用于游戏刷新,时间更新,通信更新等等更新信息的操作。

正在努力奋斗中,有问题还请多多提出和包含。

有问题才有进步!

 

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值