gettimer , settimer , restimer , stime 或 time 子例程
用途
获取或设置指定的系统范围计时器的当前值。
库
标准 C 库 (libc.a)
语法
#include <sys/time.h>
#include <sys/types.h>
#include <sys/timers.h>
#include <sys/types.h>
int TimerType;
struct timestruc_t *Resolution, *MaximumValue;
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 子例程接受的分辨率。
time 子例程返回自戳记 (即 00:00:00 GMT , January 1 , 1970) 以来的时间 (以秒为单位)。 Tp 参数指向还存储了返回值的区域。 如果 Tp 参数是空指针,那么不会存储任何值。
执行stime子程序是为了与旧版AIX®、AT&T System V 和 BSD 系统兼容。 它使用 TIMEOFDAY 计时器来调用 settimer 子例程。
参数
| 项 | 描述 |
|---|---|
| VALUE | 指向类型为 itimerspec的结构。 |
| TimerType | 指定系统范围计时器:
|
| TimePointer | 指向类型为 struct timestruc_t的结构。 |
| 解决方案 | 指定计时器的分辨率。 |
| MaximumValue | 可能的最大计时器值。 |
| TP | 指向包含时间 (以秒为单位) 的结构。 |
返回值
如果调用成功,那么 gettimer, settimer, restimer和 stime 子例程将返回值 0 (零)。 返回值为-1表示发生错误,并设置errno。
time 子例程返回自 Epoch 以来的时间值 (以秒为单位)。 否则,将返回值 ((time_t)-1) ,并设置 errno 全局变量以指示错误。
错误代码
如果在 gettimer, settimer, restimer或 stime 子例程中发生错误, 接收到返回值-1 ,并且 errno 全局变量设置为下列其中一个错误代码:
| 项 | 描述 |
|---|---|
| EINVAL | TimerType 参数未指定已知的系统范围计时器,或者 settimer 子例程的 TimePointer 参数超出指定的系统范围计时器的范围。 |
| Efault | 参数地址引用的内存无效。 |
| EIO | 访问计时器设备时发生错误。 |
| EPERM | 请求进程没有设置指定计时器的相应特权。 |
如果时间子例程不成功,则返回值为-1,全局变量errno设置如下:
| 项 | 描述 |
|---|---|
| Efault | 参数地址引用的内存无效。 |