linux定时器timerfd系列函数学习

使用timerfd的好处是可以结合epoll或poll或select使用,当超时时间到时epoll等会返回可读。

1.

int timerfd_create(int clockid,int flags)

timerfd_create返回一个文件描述符,该文件描述符和定时器所关联。

clockid:

clockid可以为CLOCK_REALTIME或者CLOCK_MONOTONIC。最好使用CLOCK_MONOTONIC,这样的话即使你改变了系统时钟的话也不会受到影响,但是CLOCK_REALTIME会受到硬性。如果对这两个选项感兴趣的话可以自行去网上查写关于他们的资料。

flags:

flags可以是TFD_NONBLOCK、TFD_CLOEXEC的或。设置TFD_NONBLOCK代表把返回的文件描述符设置为非阻塞模式,这个和用fcntl设置该文件描述符的O_NONBLOCK的效果一样。设置TFP_CLOEXEC代表当执行exec时该文件描述符会自动关闭。

 

2.

int timerfd_settime(int fd,int flags,const struct itimerspec *new_value,struct itimerspec *old_value)

timerfd_settime可以启动或者停止定时器。

让我们先看看两个结构体:

                         struct timespec{

                                time_t  tv_sec;//秒数

                                long tv_nsec;//纳秒数

                       }

                      struct itimerspec{

                               struct timespec it_interval;

                               struct timespec it_value;

                     }

参数说明:

new_value.it_value:设置初始定时器时间。只要new_value.it_value中的tv_sec和tv_nsec有一个不为0,则启动定

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值