linux定时器统计进程运行时间,Linux定时器例子 - SparkFire的个人空间 - OSCHINA - 中文开源技术交流社区...-程序员宅基地

技术标签: linux定时器统计进程运行时间  

点击上方蓝字可直接关注!方便下次阅读。如果对你有帮助,麻烦点个在看或点个赞,感谢~文章首发公众号—— Pou光明

程序中难免会使用到定时器,今天给大家介绍Linux中一种定时器的实现。Linux下还有很多其他定时的实现,如精确定时等,感兴趣的同志可以再做深入了解。

编程到现在,其实很多工作都是在调用api,还没能完全脱离面向“谷歌”编程的实质,面对这种情形,如何破局呢?好巧啊,我也在思考。。。。。。

一、api简介

NAMEtimerfd_create, timerfd_settime, timerfd_gettime -通过文件描述符来告知定时器状态。SYNOPSIS#include int timerfd_create(int clockid, int flags);int timerfd_settime(int fd, int flags,const struct itimerspec *new_value,struct itimerspec *old_value);int timerfd_gettime(int fd, struct itimerspec *curr_value);

timerfd_create()

创建一个新的计时器对象,并返回对应的文件描述符。 clockid参数指定用于标记计时器进度的时钟,并且必须为CLOCK_REALTIME或CLOCK_MONOTONIC。CLOCK_REALTIME是可设置的系统范围时钟。CLOCK_MONOTONIC是不可设置的时钟。具体区别,感兴趣的同志自行验证。

timerfd_settime()

启动或关闭定时器。

new_value参数指定计时器的初始到期时间和间隔。用于此参数的itimer结构包含两个字段,每个字段依次是timespec类型的结构:

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 */

};

二、用例及封装函数

1、 根据时间间隔创建定时器

static int32_t TimerStart(uint64_t interval_ms){int32_t timerfd = 0;struct itimerspec its = {0};struct itimerspec itsTest = {0};timerfd = timerfd_create(CLOCK_MONOTONIC, 0);if (timerfd < 0){return -1;}/* Start the timer */its.it_value.tv_sec = interval_ms / 1000;its.it_value.tv_nsec = (interval_ms % 1000) * 1000000;its.it_interval = its.it_value;// if (timerfd_settime(timerfd, 0, &its, NULL) < 0)if (timerfd_settime(timerfd, TFD_TIMER_ABSTIME, &its, NULL) < 0){close(timerfd);return -1;}return timerfd;}

2、通过文件描述符判断定时器是否溢出

static int32_t TimerExpired(int32_t timerfd){uint64_t exp;ssize_t s;s = read(timerfd, &exp, sizeof(uint64_t));if (s != sizeof(uint64_t)){printf("read timerd failed \n");return -1;}return 0;}

3、通过文件描述符销毁定时器

static void TimerStop(int32_t timerfd){close(timerfd);}

4、主测试程序

int main(void){int test = 1;struct itimerspec curr_value = {0};int32_t l_n32TimerFd = TimerStart(1100);printf("l_n32TimerFd is %d \n", l_n32TimerFd);while (1){test++;if (-1 == TimerExpired(l_n32TimerFd)){printf("timer failed !\n");TimerStop(l_n32TimerFd);}timerfd_gettime(l_n32TimerFd, &curr_value);// printf("curr_value is %ld \n", curr_value.it_value.tv_sec);printf("curr_value nsec is %ld \n", curr_value.it_value.tv_nsec);DEBUG("time is arrive 1s count is %d ", test);if (5 == test){struct itimerspec its = {0};/* Stop the timer */its.it_value.tv_sec = 0;its.it_value.tv_nsec = 0;its.it_interval = its.it_value;if (timerfd_settime(l_n32TimerFd, TFD_TIMER_ABSTIME, &its, NULL) < 0){close(l_n32TimerFd);printf("timerfd_settime ailed \n");return -1;}}}}

5、程序运行结果

2eb636ed8d00206908f9a7c73794fcbd.png

6、更多第一手英文资料的获取

man timerfd_create

很多我就是翻译了一下。

三、总结时间

如何理解马克思主义哲学中的对立统一 。。。

再增加一个时间戳的调用:

struct timespec t_start, t_end;unsigned long total_us = 0;clock_gettime(CLOCK_MONOTONIC, &t_start);// do someclock_gettime(CLOCK_MONOTONIC, &t_end);total_us = (t_end.tv_sec - t_start.tv_sec) * 1000000 + (t_end.tv_nsec - t_start.tv_nsec) / 1000;DEBUG("time is arrive 1s count is %d %lu us", test, total_us );

获取工程源码可在程序后台留言:“Linux定时器例子”

9e8f5917107c2cb33f2914cd63fd2ec5.png

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/weixin_36297610/article/details/116552454

智能推荐

java 实现 数据库备份_java数据备份-程序员宅基地

文章浏览阅读1k次。数据库备份的方法第一种:使用mysqldump结合exec函数进行数据库备份操作。第二种:使用php+mysql+header函数进行数据库备份和下载操作。下面 java 实现数据库备份的方法就是第一种首先我们得知道一些mysqldump的数据库备份语句备份一个数据库格式:mysqldump -h主机名 -P端口 -u用户名 -p密码 --database 数据库名 ..._java数据备份

window10_ffmpeg调试环境搭建-编译64位_win10如何使用mingw64编译ffmpeg-程序员宅基地

文章浏览阅读3.4k次,点赞2次,收藏14次。window10_ffmpeg调试环境搭建_win10如何使用mingw64编译ffmpeg

《考试脑科学》_考试脑科学pdf百度网盘下载-程序员宅基地

文章浏览阅读6.3k次,点赞9次,收藏14次。给大家推荐《考试脑科学》这本书。作者介绍:池谷裕二,日本东京大学药学系研究科教授,脑科学研究者。1970年生于日本静冈县,1998年取得日本东京大学药学博士学位,2002年起担任美国哥伦比亚大学客座研究员。专业为神经科学与药理学,研究领域为人脑海马体与大脑皮质层的可塑性。现为东京大学药学研究所教授,同时担任日本脑信息通信融合研究中心研究主任,日本药理学会学术评议员、ERATO人脑与AI融合项目负责人。2008年获得日本文部大臣表彰青年科学家奖,2013年获得日本学士院学术奖励奖。这本书作者用非常通俗易懂_考试脑科学pdf百度网盘下载

今天给大家介绍一下华为智选手机与华为手机的区别_华为智选手机和华为手机的区别-程序员宅基地

文章浏览阅读1.4k次。其中,成都鼎桥通信技术有限公司是一家专业从事移动通讯终端产品研发和生产的高科技企业,其发布的TD Tech M40也是华为智选手机系列中的重要代表之一。华为智选手机是由华为品牌方与其他公司合作推出的手机产品,虽然其机身上没有“华为”标识,但是其品质和技术水平都是由华为来保证的。总之,华为智选手机是由华为品牌方和其他公司合作推出的手机产品,虽然外观上没有“华为”标识,但其品质和技术水平都是由华为来保证的。华为智选手机采用了多种处理器品牌,以满足不同用户的需求,同时也可以享受到华为全国联保的服务。_华为智选手机和华为手机的区别

c++求n个数中的最大值_n个数中最大的那个数在哪里?输出其位置,若有多个最大数则都要输出。-程序员宅基地

文章浏览阅读7.6k次,点赞6次,收藏17次。目录题目描述输入输出代码打擂法数组排序任意输入n个整数,把它们的最大值求出来.输入只有一行,包括一个整数n(1_n个数中最大的那个数在哪里?输出其位置,若有多个最大数则都要输出。

python overflowerror_python – 是否真的引发了OverflowError?-程序员宅基地

文章浏览阅读520次。Python 2.7.2 (v2.7.2:8527427914a2, Jun 11 2011, 15:22:34)[GCC 4.2.1 (Apple Inc. build 5666) (dot 3)] on darwinType "help", "copyright", "credits" or "license" for more information.>>> float(1...

随便推点

LVS+Keepalived使用总结_this is the redundant configuration for lvs + keep-程序员宅基地

文章浏览阅读484次。一、lvs简介和推荐阅读的资料二、lvs和keepalived的安装三、LVS VS/DR模式搭建四、LVS VS/TUN模式搭建五、LVS VS/NAT模式搭建六、keepalived多种real server健康检测实例七、lvs持久性工作原理和配置八、lvs数据监控九、lvs+keepalived故障排除一、LVS简介和推荐阅读的资料 学习LVS+Keepalived必须阅读的三个文档。1、 《Keepalived权威指南》下载见http://..._this is the redundant configuration for lvs + keepalived server itself

Android面试官,面试时总喜欢挖基础坑,整理了26道面试题牢固你基础!(3)-程序员宅基地

文章浏览阅读795次,点赞20次,收藏15次。AIDL是使用bind机制来工作。java原生参数Stringparcelablelist & map 元素 需要支持AIDL其实Android开发的知识点就那么多,面试问来问去还是那么点东西。所以面试没有其他的诀窍,只看你对这些知识点准备的充分程度。so,出去面试时先看看自己复习到了哪个阶段就好。下图是我进阶学习所积累的历年腾讯、头条、阿里、美团、字节跳动等公司2019-2021年的高频面试题,博主还把这些技术点整理成了视频和PDF(实际上比预期多花了不少精力),包含知识脉络 + 诸多细节。

机器学习-数学基础02补充_李孟_新浪博客-程序员宅基地

文章浏览阅读248次。承接:数据基础02

短沟道效应 & 窄宽度效应 short channel effects & narrow width effects-程序员宅基地

文章浏览阅读2.8w次,点赞14次,收藏88次。文章目录1. 概念:Narrow Width Effect: 窄宽度效应Short Channel effects:短沟道效应阈值电压 (Threshold voltage)2. 阈值电压与沟道长和沟道宽的关系:Narrow channel 窄沟的分析Short channel 短沟的分析1. 概念:Narrow Width Effect: 窄宽度效应在CMOS器件工艺中,器件的阈值电压Vth 随着沟道宽度的变窄而增大,即窄宽度效应;目前,由于浅沟道隔离工艺的应用,器件的阈值电压 Vth 随着沟道宽度_短沟道效应

小米组织架构再调整,王川调职,雷军自任中国区总裁_小米更换硬件负责人-程序员宅基地

文章浏览阅读335次。5月17日,小米集团再发组织架构调整及任命通知。新通知主要内容为前小米中国区负责人王川调职,雷军自任中国区总裁。小米频繁调整背后,雷军有些着急了中国区手机业务持续下滑。根据IDC最近公布的数据,小米一季度全球出货量为2750万台,相比去年同期的2780万台,小幅下降。参考Canalys、Counterpoint的统计,小米一季度出货量也都录得1%的同比下滑。作为对比,IDC数据显示,华为同期出..._小米更换硬件负责人

JAVA基础学习大全(笔记)_java学习笔记word-程序员宅基地

文章浏览阅读9.1w次。JAVASE和JAVAEE的区别JDK的安装路径[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-perPRPgq-1608641067105)(C:\Users\王东梁\AppData\Roaming\Typora\typora-user-images\image-20201222001641906.png)]卸载和安装JDK[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-SYnXvbAn-1608641067107)(C:\Users_java学习笔记word