下载安卓APP箭头
箭头给我发消息

客服QQ:3315713922

轻松学会Linux定时器的使用方法

作者:课课家     来源: http://www.kokojia.com点击数:1083发布时间: 2017-01-08 08:00:36

标签: 考试认证Linux认证Linux

软考,您想通过吗?一次通过才是硬道理

  我们知道在Linux中有着定时器这一个功能,通过使用定时器我们能够达到周期性的执行某一任务或者是到了一个指定时间去执行某一个任务的效果。对于Liunx初学者来说可能对此不太熟悉怎么运用,为此在本文中课课家笔者就为大家介绍几种Linux定时器的活用方法,让大家在对此有一个基本的了解。

轻松学会Linux定时器的使用方法_考试认证_Linux认证_Linux_课课家

  


 

  要想使用Linux中的定时器功能,我们可以通过三种方法来实现:

  利用linux内部的三个定时器

  ②利用sleep, usleep函数让进程睡眠一段时间

  ③利用gettimeofday, difftime等

  


   利用linux内部的三个定时器

  首先我们先来看看利用linux操作系统为每一个进程提供的3个内部计时器的方法。

  ITIMER_REAL: 表示给一个指定的时间间隔,按照实际的时间来减少这个计数,当时间间隔为0的时候发出SIGALRM信号。

  ITIMER_VIRTUAL: 表示给定一个时间间隔,当进程执行的时候才减少计数,时间间隔为0的时候发出SIGVTALRM信号。

  ITIMER_PROF: 表示给定一个时间间隔,当进程执行或者是系统为进程调度的时候,减少计数,时间到了发出SIGPROF信号,一般这个和ITIMER_VIRTUAL联合,常用来计算系统内核时间和用户时间。

  下面是具体用到的函数:

it函数

  在上述的函数中it_interval用来指定每隔多长时间执行任务, it_value用来保存当前时间离执行任务还有多长时间。举个例子,比如说我们指定it_interval为2秒(微秒为0),开始的时候我们把it_value的时间也设定为2秒(微秒为0),当过了一秒 it_value就减少一个为1, 再过1秒则it_value又减少1变为0,这个时候发出信号(告诉用户时间到了可以执行任务了),并且系统自动把it_value的时间重置为it_interval的值,也就是重置为2秒,然后再重新计数。

  为了帮助大家更透彻的理解这个问题,笔者再给大家举一个例子:

it函数2

it函数3

  以上程序的ITMER_REAL定时器,每隔2秒钟都会发送一个SIGALRM信号,当主函数接收到了这个信号之后,调用信号处理函数prompt_info在标准错误上输出time is running out这个字符串。对于ITIMER_VIRTUALITIMER_PROF的使用方法其实是相类似的,当我们在setitimer里面设置的定时器为ITIMER_VIRTUAL的时候,只需把sigaction里面的SIGALRM改为SIGVTALarm,同理TIMER_PROF对应为SIGPROF。

  


   利用sleep, usleep函数让进程睡眠一段时间

  接下来我们来看看用sleep以及usleep怎样实现定时执行任务,下面是具体的函数:

sleep和usleep

  通过观察我们不难发现,这个函数要比上面的简单且时间比较准,当指定2秒到了就输出一个字符串。所以如果我们只做一般的定时到了时间去执行一个任务的时候,使用这种方法是最简单便捷的。

 


   利用gettimeofday, difftime等

  最后我们我们来看看通过自己计算时间差的方法来进行定时,具体的函数如下:

时间差方法

  通过观察我们可以发现这个方法和上面方法的不同之处在于,这是自己手工计算时间差的。如果想更精确的计算时间差,我们可以把time函数换成gettimeofday,这个可以精确到微妙,但由于这种方法效率低所以我们不常用。

  


 

  以上就是三种利用Linux定时器的方法,具体使用哪一种我们可以根据实际情况来决定。

  本次的轻松学会Linux定时器的使用方法的讲解到此就暂告一段落,如果以后有什么相关的内容继续进行补充或者修改的话,笔者会在此继续进行相关的内容的补充或者修改的工作,同时也欢迎大家对本次的讲解提出自己的建议和补充。最后笔者希望本次的讲解对大家学习Linux和Linux认证能够起到一定的帮助作用!

赞(0)
踩(0)
分享到:
推荐查看
华为认证网络工程师 HCIE直播课视频教程