Linux下定时器的使用主要用到两个函数:setitimer()和getitimer();

注意:setitimer()一个进程中只能有一个,下一个会覆盖前一个的定时。

Linux系统给每个进程提供了3个定时器,每个定时器在各自不同的域里面计数,当任何一个timer计数结束了,系统就发一个信号(signal)给该进程,同时计数器重置。

以下是支持的三种计数器形式:

1、ITIMER_REAL         在real  time中计数器减1,然后等计数往比后发送SIGALRM信号。

2、ITIMER_VIRTUAL    当进程在执行的过程中计数,然后当计数完毕后发送SIGVTALRM信号给该进程。

3、ITIMER_PROF         在该进程被执行和系统在代表该进程执行的时间都进行计数。

getitimer()/setitimer()功能描述:

获取或设定间歇计时器的值。系统为进程提供三种类型的计时器,每一类以不同的时间域递减其值。当计时器超时,信号被发送到进程,之后计时器重启动。

用法:

#include

int getitimer(int which, struct itimerval *value);

int setitimer(int which, const struct itimerval *value, struct itimerval *ovalue);

参数:

which:间歇计时器类型,有三种选择

ITIMER_REAL //数值为0,计时器的值实时递减,发送的信号是SIGALRM。

ITIMER_VIRTUAL //数值为1,进程执行时递减计时器的值,发送的信号是SIGVTALRM。

ITIMER_PROF //数值为2,进程和系统执行时都递减计时器的值,发送的信号是SIGPROF。

value,ovalue:时间参数,原型如下

struct itimerval

{

struct timeval it_interval;

struct timeval it_value;

};

struct timeval

{

long tv_sec;

long tv_usec;

}; getitimer()用计时器的当前值填写value指向的结构体。

setitimer()将value指向的结构体设为计时器的当前值,如果ovalue不是NULL,将返回计时器原有值。

返回说明:

成功执行时,返回0。失败返回-1,errno被设为以下的某个值

EFAULT:value或ovalue是不有效的指针

EINVAL:其值不是ITIMER_REAL,ITIMER_VIRTUAL 或 ITIMER_PROF之一。

举例说明:

#include#include#include#include#include#includevoidPrintMsg(intNum)

{

printf("%s/n","Hello World");return;

}intmain(intargc,char*argv[])

{

signal(SIGALRM, PrintMsg);structitimerval tick;

tick.it_value.tv_sec=10;//十秒钟后将启动定时器tick.it_value.tv_usec=0;

tick.it_interval.tv_sec=1;//定时器启动后,每隔1秒将执行相应的函数tick.it_interval.tv_usec=0;//setitimer将触发SIGALRM信号intret=setitimer(ITIMER_REAL,&tick, NULL);if( ret!=0)

{

printf("Set timer error. %s /n", strerror(errno) );return-1;

}

printf("Wait!/n");

getchar();return0;

}

linux定时器错误使用,linux下定时器的使用相关推荐

  1. linux 协议错误,在linux客户机上:协议错误,Vagrant无法挂载同步的文件夹_vagrant_开发99编程知识库...

    使用一個 Windows 主機和一個運行在in的Linux客戶機使用同步文件夾,我有一個奇怪的問題. 在第一個引導( 或者在 vagrant destroy 之後) 中,項目文件夾掛載到/vagran ...

  2. linux多字节错误,在Linux中解压缩时遇到多字节字符的问题

    我们正在从源系统中接收一个zip文件.这是一个.zip文件. 我们正在使用unzip命令在Linux中将其解压缩. .zip文件包含一个.dat文件,该文件包含相同宽度的行.确切地说,这是一个固定宽度 ...

  3. 配置linux内核错误,配置Linux内核(menuconfig):重定义错误

    我有Linux内核3.8.0源代码,当尝试使用 menuconfig 选项(使用"make menuconfig" terminal命令)配置它时,我得到以下错误列表: DALEK ...

  4. linux tee错误日志,linux tee命令使用详解教程

    在执行Linux命令时,我们既想把输出保存到文件中,又想在屏幕上看到输出内容,就可以使用tee命令.接下来是小编为大家收集的linux tee 命令使用详解教程,希望能帮到大家. linux tee ...

  5. linux 忽略错误信息,linux – 由于文件模式错误而忽略/etc/logrotate.conf

    我如何做logrotate,当我做logrotate时,我看不出任何效果 root@me-Latitude-E5550:/etc/logrotate.d# cd .. root@me-Latitude ...

  6. linux 多个定时器,timer: 一个Linux下的超级精简的多重定时器:可实现成千上万个定时任务,定时精度可达纳秒级别,且同一时间点可添加不同的任务!适用于云后台服务和嵌入式等各种环境。...

    MT_Timer(MT译为Multiple或Multi) 一.介绍 一个Linux下的超级简洁的定时器:利用epoll机制和timerfd新特性实现的多重.多用.多个定时任务实现.只需要使用TIMER ...

  7. linux内核定时器 详解,Linux系统内核定时器机制详解(下)

    7.6.3.4 把一个定时器插入到链表中 函数add_timer()用来把参数timer指针所指向的定时器插入到一个合适的定时器链表中.它首先调用timer_pending()函数判断所指定的定时器是 ...

  8. Linux timer调用流程图,Linux应用层的定时器Timer使用详解【转】

    linux下定时器的使用-- alarm() & setitimer(): 1.alarm ------------------------------------------- 如果不要求很 ...

  9. Linux时间子系统之六:高精度定时器(HRTIMER)的原理和实现

    转自:http://blog.csdn.net/droidphone/article/details/8074892 上一篇文章,我介绍了传统的低分辨率定时器的实现原理.而随着内核的不断演进,大牛们已 ...

最新文章

  1. alpine 交互sh_在这个免费的交互式教程中学习Alpine JS
  2. 深圳网络推广公司介绍几点新网站优化守则!
  3. 1-3 数组的反序输出
  4. DISCUZ 嵌入点 输出插件模版内容
  5. R开发(part2)--R语言中的数学计算
  6. 5类6类7类网线对比_孩子们长高的黄金时期是从3月到5月,这阶段多吃6类食物长得快...
  7. import pandas as pd什么意思_Pandas万花筒:让绘图变得更美观
  8. 二、Oracle学习笔记:常用数据类型和关键字
  9. 3D控件Aspose.3D 8月新版V17.8发布 | 支持6面多维地图
  10. R语言构建logistic回归模型并使用偏差(Deviance)和伪R方(pseudo R-squared )评估概率模型:使用sigr包快速计算偏差和伪R方、AIC赤信息指标和偏差的关系
  11. 快收藏ReactOS 新手指南
  12. python带你采集回车桌面高清写真壁纸
  13. 【智慧养殖解决方案】如何使用EasyGBS构建鱼塘养殖高清网络视频监控系统?
  14. 世卫批准强生新冠疫苗紧急使用权;美洲邮轮业停摆一年后将复航;IMAX将入驻上海多个商业地标 | 美通企业周刊...
  15. 富士施乐248b粉盒清零_打印机DocuPrintM228B如何清零
  16. 【第一周】数学作业(贷款问题)
  17. Android 9 行为变更:所有应用
  18. 树莓派3操作系统下载地址
  19. Python3数据分析与挖掘建模(4)单因子分析:集中趋势与离中趋势、数据分布与抽样
  20. SCREEN Semiconductor Solutions与台湾国立清华大学携手成立电子束直写光刻试产线,以实现具有唯一ID的安全芯片

热门文章

  1. LeetCode 1042. 不邻接植花(图的数据结构)
  2. 数据结构--栈--浏览器前进后退应用
  3. mysql的cpu飙升到500_[MySQLCPU]线上飙升800%,load达到12的解决过程
  4. Power BI 的 最佳搭档 Excel(基础数据分析)
  5. 从我开发过的Tensorflow、飞桨、无量框架看深度学习这几年
  6. 如果有一天,小夕不再萌...
  7. Spring Boot中使用Actuator的/info端点输出Git版本信息
  8. Solr Facet技术的应用与研究
  9. 美团集群调度系统HULK技术演进
  10. 论文浅尝 | 将文本建模为关系图,用于联合实体和关系提取