gettimer , settimer , restimer , stime 或 time 子例程

用途

获取或设置指定的系统范围计时器的当前值。

标准 C 库 (libc.a)

语法

#include <sys/time.h>
#include <sys/types.h>
int gettimer( TimerType,  Value)
timer_t TimerType;
struct timestruc_t * Value;
#include <sys/timers.h>
#include <sys/types.h>
int gettimer( TimerType,  Value)
timer_t TimerType;
struct itimerspec * Value;
int settimer(TimerType TimePointer)
int TimerType;
const struct timestruc_t *TimePointer;
int restimer(TimerType Resolution MaximumValue)
int TimerType;
struct timestruc_t *Resolution, *MaximumValue;
int stime( Tp)
long *Tp;
#include <sys/types.h>
time_t time(Tp)
time_t *Tp

描述

settimer 子例程用于设置由 TimerType 参数指定的系统范围计时器的 TimePointer 参数的当前值。

gettimer 子例程与 sys/timers.h中的函数原型一起使用时,除了参数以外, gettimer 子例程与 getinterval 子例程相同。 建议使用 getinterval 子例程,除非符合标准的应用程序需要 gettimer 子例程。 gettimer 子例程的描述和语义可能会在发行版之间进行更改,暂挂当前 gettimer 子例程描述所基于的草稿标准中的更改。

gettimer 子例程与 /sys/timers.h中的函数原型一起使用时, gettimer 子例程将 itimerspec 结构返回到由 Value 参数指定的指针。 itimerspec 结构的 it_value 成员表示当前时间间隔内计时器 (由 TimerType 参数指定) 到期之前的时间量,如果计时器处于禁用状态,那么时间间隔为零。 由 Value 参数指定的指针成员取决于计时器的分辨率。

gettimer 子例程与 sys/time.h中的函数原型一起使用时, gettimer 子例程将 timestruc 结构返回到由 Value 参数指定的指针。 此结构保存由 Value 参数指定的系统范围计时器的当前值。

任何计时器的解析都可以通过 restimer 子例程获得。 Resolution 参数表示指定计时器的分辨率。 MaximumValue 参数表示可能的最大计时器值。 这些参数的值是 settimer 子例程接受的分辨率。

注: 如果非特权用户尝试提交精细粒度计时器 (即小于 10 毫秒的计时器请求) ,那么计时器请求将提升到 10 毫秒。

time 子例程返回自戳记 (即 00:00:00 GMT , January 1 , 1970) 以来的时间 (以秒为单位)。 Tp 参数指向还存储了返回值的区域。 如果 Tp 参数是空指针,那么不会存储任何值。

执行stime子程序是为了与旧版AIX®、AT&T System V 和 BSD 系统兼容。 它使用 TIMEOFDAY 计时器来调用 settimer 子例程。

参数

描述
VALUE 指向类型为 itimerspec的结构。
TimerType 指定系统范围计时器:
TimeOfDay
(POSIX 系统时钟计时器) 此计时器表示系统的时间时钟。 对于此计时器,由 gettimer 子例程返回并由 settimer 子例程指定的值表示自 00:00:00 GMT , January 1 , 1970 以来的时间量。
TimePointer 指向类型为 struct timestruc_t的结构。
解决方案 指定计时器的分辨率。
MaximumValue 可能的最大计时器值。
TP 指向包含时间 (以秒为单位) 的结构。

返回值

如果调用成功,那么 gettimersettimerrestimerstime 子例程将返回值 0 (零)。 返回值为-1表示发生错误,并设置errno

time 子例程返回自 Epoch 以来的时间值 (以秒为单位)。 否则,将返回值 ((time_t)-1) ,并设置 errno 全局变量以指示错误。

错误代码

如果在 gettimersettimerrestimerstime 子例程中发生错误, 接收到返回值-1 ,并且 errno 全局变量设置为下列其中一个错误代码:

描述
EINVAL TimerType 参数未指定已知的系统范围计时器,或者 settimer 子例程的 TimePointer 参数超出指定的系统范围计时器的范围。
Efault 参数地址引用的内存无效。
EIO 访问计时器设备时发生错误。
EPERM 请求进程没有设置指定计时器的相应特权。

如果时间子例程不成功,则返回值为-1,全局变量errno设置如下:

描述
Efault 参数地址引用的内存无效。