Linux定时器的使用

来源:未知 责任编辑:责任编辑 发表时间:2015-10-08 14:16 点击:

 

Linux定时器的使用

Posted on 2010-03-20 17:40 feisky 阅读(1073) 评论(0) 编辑 收藏

使用定时器的目的无非是为了周期性的执行某一任务,或者是到了一个指定时间去执行某一个任务。要达到这一目的,一般有两个常见的比较有效的方法。一个是用linux内部的三个定时器,另一个是用sleep, usleep函数让进程睡眠一段时间,使用alarm定时发出一个信号,还有那就是用gettimeofday, difftime等自己来计算时间间隔,然后时间到了就执行某一任务,但是这种方法效率低,所以不常用。

alarm

alarm用在不需要经确定时的时候,返回之前剩余的秒数。

NAME

       alarm - set an alarm clock for delivery of a signal

SYNOPSIS

       #include <unistd.h>

       unsigned int alarm(unsigned int seconds);

DESCRIPTION

       alarm  arranges  for a SIGALRM signal to be delivered to the process in

       seconds seconds.

       If seconds is zero, no new alarm is scheduled.

       In any event any previously set alarm is cancelled.

测试程序:

1      cat timer.c

2     #include <stdio.h>

3     #include <unistd.h>

4     #include <sys/time.h>

5     #include <signal.h>

6      

7     void func()

8     {

9             printf("2 s reached.\n");

10   }

11    

12   int main()

13   {

14           signal(SIGALRM,func);

15           alarm(2);

16           while(1);

17           return 0;

18   }

19    

Linux内置的3个定时器

Linux为每个任务安排了3个内部定时器:

ITIMER_REAL:实时定时器,不管进程在何种模式下运行(甚至在进程被挂起时),它总在计数。定时到达,向进程发送SIGALRM信号。

ITIMER_VIRTUAL:这个不是实时定时器,当进程在用户模式(即程序执行时)计算进程执行的时间。定时到达后向该进程发送SIGVTALRM信号。

ITIMER_PROF:进程在用户模式(即程序执行时)和核心模式(即进程调度用时)均计数。定时到达产生SIGPROF信号。ITIMER_PROF记录的时间比ITIMER_VIRTUAL多了进程调度所花的时间。

定时器在初始化是,被赋予一个初始值,随时间递减,递减至0后发出信号,同时恢复初始值。在任务中,我们可以一种或者全部三种定时器,但同一时刻同一类型的定时器只能使用一个。

 

用到的函数有:

#include <sys/time.h>

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

int setitimer(int which, struct itimerval*newvalue, struct itimerval* oldvalue);

发表评论
请自觉遵守互联网相关的政策法规,严禁发布色情、暴力、反动的言论。
用户名: 验证码:点击我更换图片
最新评论 更多>>

推荐热点

  • /etc/fstab 详解
  •  LVS-NAT和LVS-DR模式的实现详解
  •  RHCE考试之磁盘配额
  • nginx主主集群
  •  LVM逻辑卷管理器
  • 学习笔记:ACL详解
  • suse linux双网卡双网关配置
  • puppet文件服务配置
  •  Nginx主主负载均衡架构

快速直达

操作系统导航

LinuxWindows虚拟机
网站首页 - 友情链接 - 网站地图 - TAG标签 - RSS订阅 - 内容搜索
Copyright © 2008-2015 计算机技术学习交流网. 版权所有

豫ICP备11007008号-1