900字范文,内容丰富有趣,生活中的好帮手!
900字范文 > 定时器 POSIX Timer定时器和setitimer定时器

定时器 POSIX Timer定时器和setitimer定时器

时间:2020-11-04 21:57:02

相关推荐

定时器 POSIX Timer定时器和setitimer定时器

POSIX 可移植

POSIX:可移植操作系统接口(Portable Operating System Interface of UNIX,缩写为 POSIX 。

POSIX Timer C API

总结POSIX系统的C标准库:

timer_create()

创建一个POSIX预处理的定时器。

语法

#include <signal.h>#include <time.h>

描述

timer_create()创建一个新的间隔预处理定时器。参数timerid在一个buffer指针返回一个型的定时器ID,必定是一个非空的指针。ID在进程里是唯一的,直到定时器被清除。新的定时器是初始化解除的。

clockid参数指定新的定时器时钟去测量定时。它能够指定下述其中一个值:

clock_settime()和clock_settime()

时钟和时间函数

语法

#include <time.h>int clock_getres(clockid_t clk_id, struct timespec *res);int clock_gettime(clockid_t clk_id, struct timespec *tp);int clock_settime(clockid_t clk_id, const struct timespec *tp);

描述

clock_getres()函数寻找指定时钟clk_id的分辨率。如果res不为NULL,通过res指针存储到结构timespec里。

时钟的分辨率取决于指定的进程执行,而不能通过配置。如果参数 tp 的 clock_settime() 指向的时间值不是 res 的倍数,则它将被截断为 res 的倍数。

setitimer定时器

getitimer和setitimer定时器 获取或者设置内部定时器的值。

语法

#include <sys/time.h>int getitimer(int which, struct itimerval *curr_value);int setitimer(int which, const struct itimerval *new_value,struct itimerval *old_value);

描述

这个系统调用提供访问内部定时器,并初始化一些点调用,和可调内部值。当定时器到期时,调用晶灰层产生一个信号,和定时器重置到指定的时间间隔。

指定三个类型定时器结果提供的参数,每个计数器不支持不同的时钟和当时钟到期,生成一个不同的信号:

一个进程只能有三种类型定时器其中的一种。若程序which选择ITIMER_REAL。 linux中的sleep、usleep、select、poll等函数的超时结果均也是使用的SIGALRM作为结束信号。若你的定时器按一定周期一直在发SIGALRM信号,那么以上几个函数均有极大可能被提前打断.

定时器的值定义通过下述结构体:

struct itimerval{struct timeval it_interval;/* 周期性定时器的时间间隔 */struct timeval it_value;/* 定时直到下一个周期为止 */}struct tiemval{time_t tv_sec;/* 秒 */suseconds_t tv_usec;/* 微妙 */}

settimer()

函数setitimer()装载或者解除通过指定的which定时器,通过设置new_value指定定时器值。如果old_value是non-NULL,buffer指向前先使用过的返回定时的值。如果两个场都是new_value.itval为0,定时器将被解除。

new_value.it_interval区域指定定时器的新的间隔值;如果两个子场都是零,定时器将一次生效。

返回值

成功返回0.错误返回-1,并适当设置errno.

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。