extern int clock_gettime (clockid_t __clock_id, struct timespec *__tp) __THROW;
时间: 2024-09-28 22:13:32 浏览: 102
Cpp.zip_little_simple codes in cpp
`clock_gettime()` 是 C 标准库中的一个函数,它用于从特定类型的时钟(由 `clockid_t` 类型的参数 `__clock_id` 指定)获取当前的时间戳。这个函数有两个主要参数:
1. **clockid_t __clock_id**:这是一个枚举类型,代表不同的时钟源,如 `CLOCK_MONOTONIC`, `CLOCK_REALTIME`, 或 `CLOCK_PROCESS_CPUTIME_ID` 等。它指定了要查询的具体时间来源。
2. **struct timespec *__tp**:这是一个指向 `struct timespec` 结构体的指针,`struct timespec` 包含秒数 (`tv_sec`) 和微秒数 (`tv_nsec`,但这里以 `__suseconds_t` 表示,即千分之一秒)两个字段,返回的是自纪元(通常Unix Epoch,1970年1月1日 00:00:00 UTC)以来的持续时间。
当你调用 `clock_gettime(__clock_id, __tp)` 时,`__tp` 中会填充对应时钟的当前时间信息。例如,如果你使用 `CLOCK_MONOTONIC`,则返回的是自系统启动以来未受调整的持续时间,适合于精确测量时间间隔。
```c
#include <time.h>
#include <sys/time.h>
// 获取monotonic时钟的时间戳
clockid_t clock_id = CLOCK_MONOTONIC;
struct timespec time_info;
if (clock_gettime(clock_id, &time_info) == -1) {
perror("Error getting monotonic clock time");
} else {
printf("Time since epoch in seconds: %ld\n", time_info.tv_sec);
printf("Microseconds since epoch: %lu\n", time_info.tv_nsec / 1000); // 单位转换为us
}
```
阅读全文