最近学习、研究Linux基于文件描述符的定时器应用。相关介绍N多,这里讲碰到的问题记录、说明下。

这个主要有三个相关函数:
1、timerfd_create(int clockid, int flags)
说明:创建一个timer fd;
1-1、clockid:可以是CLOCK_MONOTONIC或者CLOCK_REALTIME。
说明:CLOCK_MONOTONIC是机器启动到现在为止的时间,所以,这个值不是很大(用clock_gettime测试);CLOCK_REALTIME是系统时间,这个值是比较大的(就是1970到现在的时间);所以,如果clockid为CLOCK_MONOTONIC,那么只能用clock_gettime获取时间,因为暂时我只知道这个函数可以获取这种时间;
1-2、flags:可以是0或者O_CLOEXEC/O_NONBLOCK。
说明:如果是用轮询技术,那么就是非阻塞的O_NONBLOCK。

2、timerfd_settime(int ufd, int flags, const struct itimerspec * new_value, struct itimerspec * old_value);

说明:设置定时器;

2-1、ufd:是timerfd_create返回的文件句柄。

2-2、两个时间参数:new_value是设置超时时间;old_value定时器这次设置之前的超时时间;

           struct timespec {time_t tv_sec;                /* Seconds */long   tv_nsec;               /* Nanoseconds */};struct itimerspec {struct timespec it_interval;  /* Interval for periodic timer */struct timespec it_value;     /* Initial expiration */};

2-3、flags:为1(TFD_TIMER_ABSTIME)代表设置的是绝对时间;为0代表相对时间。
说明:(1)非常要注意,这里的相对时间,指的是timerfd_settime为开始的;所以,如果flags为0,那么,直接设置new_value.it_value值为超时间隔时间,比如说1s,那么设置new_value.it_value.tv_sec为1!!!切记切记(我就是没搞明白,设置了这个参数,导致一直阻塞在那里)

(2)如果flag设置为1,那么,超时时间设置:new_value.it_value先获取当前时间,然后加上超时时间(比如1秒);同时,还可以设置new_value.it_interval,比如设置为2s。效果就是在超时时间过了之后,每次再过2s,超时。

3、timerfd_gettime
说明:获取定时时间(即上次的设置的失效时间)【反正我是没用到】

主要参考文章:
http://blog.csdn.net/echoisland/article/details/6881368

http://fpcfjf.wap.blog.163.com/w2/blogDetail

http://carmark.iteye.com/blog/1026857

Linux定时器描述符(timerfd)shiy相关推荐

  1. [转帖]linux文件描述符文件/etc/security/limits.conf

    linux文件描述符文件/etc/security/limits.conf https://blog.csdn.net/fanren224/article/details/79971359 需要多学习 ...

  2. 抽象思想解读Linux进程描述符

    来源 | 嵌入式客栈 责编 | Carol 头图 | CSDN 下载自视觉中国 内核是怎么工作的? 首先要理解进程管理,进程调度,本文开始阅读进程管理部分,首先从进程的抽象描述开始.抽象是软件工程的灵 ...

  3. 玩转Linux文件描述符和重定向

    本文介绍linux中文件描述符与重定向的相关知识,文件描述符是与文件输入.输出相关联的整数,它们用来跟踪已打开的文件.有需要的朋友参考下. 原文出处:http://www.jbxue.com/arti ...

  4. linux文件描述符导致squid拒绝服务

    linux文件描述符导致squid拒绝服务   前几天因工作需要在RHEL4.8上面架设了一个squid双网代理,刚开始测试一切正常,然后就在前台负载均衡服务器把这个代理地址加上,运行一段时间后,客服 ...

  5. linux文件描述符、软硬连接、输入输出重定向

    引用链接:https://blog.csdn.net/qq769651718/article/details/79459346 文件描述符的作用: 文件描述符是linux操作系统中特有的概念.其相当于 ...

  6. linux文件描述符与标识符,文件描述符fd

    这里以问答的方式来讨论这个问题: 1. 文件描述符 fd 和文件指针 FILE *的关系? 文件描述符是什么?我们知道每一个进程都有一个自己的PCB(进程控制块),进程控制块的结构是: struct ...

  7. Linux进程描述符task_struct结构体详解--Linux进程的管理与调度(一)

    转自:http://blog.csdn.net/gatieme/article/details/51383272 日期 内核版本 架构 作者 GitHub CSDN 2016-05-12 Linux- ...

  8. Linux进程描述符task struct结构体详解--Linux进程的管理与调度(一)

    分享一下我老师大神的人工智能教程!零基础,通俗易懂!http://blog.csdn.net/jiangjunshow 也欢迎大家转载本篇文章.分享知识,造福人民,实现我们中华民族伟大复兴! 日期 内 ...

  9. Linux进程描述符task_struct结构体简析

    进程是处于执行期的程序以及它所管理的资源(如打开的文件.挂起的信号.进程状态.地址空间等等)的总称 Linux内核通过一个被称为进程描述符的task_struct结构体来管理进程,这个结构体包含了一个 ...

最新文章

  1. Python List append()方法
  2. 计算机组成原理考研重点
  3. Knockout 新版应用开发教程之visible绑定
  4. go interface 的坑
  5. 如何用面对对象来做一个躁动的小球?
  6. PyQt5中使用代码实现嵌套布局
  7. Spring Boot 面试题整理
  8. UI设计灵感|引人注目的弹窗设计参考
  9. 【Qt串口调试助手】1.1 - Qt5编写串口调试助手,Qt串口编程
  10. mongodb 如何更改端口号_Python 操作 MongoDB 数据库介绍
  11. npm下载安装 nodejs下载安装
  12. php批量打印页面,SETE批量打印
  13. 东南亚金融服务商Pundi X正式加入 Achain 生态
  14. 计算机开机自检时,电脑开机启动时出现DHCP自检怎么办
  15. 利用Windows内置工具测试硬盘速度
  16. 微信发朋友圈的测试用例【详细测试用例】
  17. 现有一些开源ESB总线的比较
  18. unity读取Texture文件并转为Sprit
  19. 关于IllegalStateException: Bindings already cleared
  20. 全国每年计算机专业毕业生有多少,计算机专业国内就业分析

热门文章

  1. 论文学习-Stochastic Sparse Subspace Clustering
  2. 图文并解Word插入修改删除批注
  3. 阿里OSS图片持久化,裁切,缩放,格式转换等
  4. 4.2.1 Duration and Convexity
  5. Markdown入门指南 --写博客,word必备技术
  6. linux if 判断
  7. 本地文件共享到云服务器,本地文件共享到云服务器
  8. 云服务器文件做共享,云服务器文件共享
  9. 计算机复制方法有,电脑复制粘贴怎么用(6种电脑复制粘贴方法)
  10. 数据库如何转身云原生数据库