当前位置: 首页 » 电脑知识 » 电脑系统知识 » 正文

Linux setitimer函数的操作技巧

发布时间:2025-01-17 以下文章来源于网友投稿,内容仅供参考!

Linux系统使用setitimer函数能够事项高精度的定时功能,用于定时执行function,下面小编将针对setitimer函数的用法给大家做个详细介绍,一起来了解下吧。

说明: setitimer一个进程中只能有一个 下一个会覆盖前一个的定时 想一个进程多个定时器只能自己实现。

setitimer() 不支持在同一进程中同时使用多次以支持多个定时器。

linux有关定时器(setitimer)的叙述是这样的:

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

一共支持以下3中计数器形式:

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

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

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

【getitimer/setitimer系统调用】

功能描述:

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

用法:

#include 《sys/time.h》

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 《stdio.h》

#include 《unistd.h》

#include 《signal.h》

#include 《string.h》

#include 《sys/time.h》

#include 《errno.h》

void PrintMsg(int Num)

{

printf(%s/n, Hello World);

return;

}

int main(int argc, char* argv[])

{

signal(SIGALRM, PrintMsg);

struct itimerval 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信号

int ret = setitimer(ITIMER_REAL, &tick, NULL);

if ( ret != 0)

{

printf(Set timer error. %s /n, strerror(errno) );

return -1;

}

printf(Wait!/n);

getchar();

return 0;

}

上面就是Linux中setitimer函数的用法介绍了,setitimer函数拥有三种类型计时器选择,为了达到更高精度的定时,还是选择setitimer函数比较好。

关键词: setitimer Linux setitimer setitimer函数
  • • Win7快速打开命令提示符的技巧

    通常用户使用命令提示符,都是在运行中输入CMD。有用户反应想要知道是否有更简便的开启方式,下面小编就教大家在Win7系统中快速

  • • 如何解决Win7开机按F2无法启动硬件问题

    有许多用户反馈,在开机的时候按下键盘上的F2,电脑无法识别启动硬件,提示IPV4*******,IPV6********,不知道该如何解决。下面

  • • Win7系统提示“Windows找不到文件或没有关联的程序”如何办?

    有用户反应在打开计算机管理界面的时候,发现电脑提示Windows找不到文件或没有关联的程序,遇到这个问题不知道该怎么办?下面小

  • • Win7在休眠模式中取消键盘或鼠标唤醒的教程

    用户都知道电脑长时间不使用就会进入休眠模式以节约电量。但是有时用户会不小心碰到键盘或鼠标就会唤醒电脑。下面小编就教大家介

  • • Win7使用蓝牙后显示“Bluetooth外围设备”如何删除?

    有用户反应在使用完蓝牙后,电脑上新添加了Bluetooth外围设备的显示,手动删除却没有效果,遇到这个问题要怎么办呢?下面小编就

  • 中油员工宝APP下载安装-中油员工宝最新版本官方安卓版下载 V1.2.1
    pdf转换器精灵app下载-pdf转换器精灵下载安卓版V1.0.3
    我的VR女友手机版下载_我的VR女友安卓最新版下载
    biubiu加速器官方正版下载-biubiu手游加速器免费下载
    战斗大师内置mod菜单下载-战斗大师内置mod菜单最新版下载
    雷霆战机2025回归下载-雷霆战机2025回归安卓版下载
    城市里的欧派最新版2025-城市里的欧派最新版本下载安装
    手机反恐特别行动无限钻石版下载-手机反恐特别行动无限金币钻石版下载
    人渣scum手机版下载-人渣scum手机版中文版下载安装正版2025
    爱玛出行app官网下载-爱玛出行安卓版下载
    海底捞学生证优惠什么时候可以用-海底捞学生证优惠时段
    2027年经济会更难吗?2027年中国经济会好转吗
    西武高铁2026能不能开通?西武高铁什么时候全线通车
    2026即将开通的高铁有哪些?2026即将开通的高铁站名单
    福州十大酒店排名:福州最好的酒店排行榜
    上海七星级酒店排行榜前十名:上海七星级酒店一览表
    上海酒店排行榜前十名:上海性价比高的酒店推荐
    中国商标注册网官网查询入口:https://sbj.cnipa.gov.cn/sbj/index.html
    国家医学考试网成绩查询入口:https://www2.nmec.org.cn/wangbao/nme/sp/login.html
    国家企业信息公示系统江苏:https://js.gsxt.gov.cn/