Linux 定时器setitimer()
来源:互联网 发布:图片日语翻译软件 编辑:程序博客网 时间:2024/05/21 11:05
用法:
#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 {
};
struct timeval
{
__time_t tv_sec;
__suseconds_t tv_usec;
};
其中,tv_sec为Epoch到创建struct timeval时的秒数,tv_usec为微秒数,即秒后面的零头。比如当前我写博文时的tv_sec为1244770435,tv_usec为442388,即当前时间距Epoch时间1244770435秒,442388微秒。需要注意的是,因为循环过程,新建结构体变量等过程需消耗部分时间,我们作下面的运算时会得到如下结果:
int i;
for (i = 0; i < 4; ++i)
{
gettimeofday(&tv, NULL);
printf("%dt%dn", tv.tv_usec, tv.tv_sec);
sleep(1);
}
442388
443119
443543
444153
前面为微秒数,后面为秒数,可以看出,在这个简单运算中,只能精确到小数点后面一到两位,或者可以看出,每进行一次循环,均需花费0.005秒的时间,用这个程序来作计时器显然是不行的,除非精确计算产生的代码消耗时间。
getitimer()用计时器的当前值填写value指向的结构体。
setitimer()将 value 指向的结构体设为计时器的当前值,如果ovalue不是NULL,将返回计时器原有值。
返回说明:
成功执行时,返回0。失败返回-1,errno被设为以下的某个值
EFAULT:value 或ovalue是不有效的指针
EINVAL:其值不是ITIMER_REAL,ITIMER_VIRTUAL 或 ITIMER_PROF之一
例子:
void sigroutine(int signo)
{
}
int main()
{
}
- linux定时器setitimer
- Linux 定时器setitimer()
- Linux 定时器setitimer()
- Linux 定时器setitimer()
- linux中定时器 setitimer()
- linux c setitimer定时器
- Linux定时器之setitimer()
- Linux定时器函数setitimer
- Linux定时器——setitimer()
- linux定时器 --setitimer 的用法
- Linux定时器设置函数setitimer
- 【linux 开发】定时器使用setitimer
- linux下定时器函数 setitimer()
- LINUX setitimer创建定时器实例
- linux下setitimer定时器与定时器取消
- setitimer 定时器
- Linux下的定时器:alarm()与setitimer()
- Linux下的定时器:alarm()与setitimer()
- 读书笔记: processor architecture<computer system a programmer perspective第二章>
- Decode Ways
- 读书笔记《30天自制操作系统》day10
- Makefile初步(打桩先,晚上完善)
- PBOC/EMV-交易流程详解--POS与卡片的数据交互进行分析
- Linux 定时器setitimer()
- Spring_009_DataSource
- 大家小心了《C程序设计伴侣》出现了!!!
- Spring security2 登录例子1
- 元器件选型参考:华强北现货搜索器
- ssh开发过程中遇到的问题,以及一些解决办法
- PBOC/EMV之TLV编码与解码
- string types
- FastMM安装