参考网址:

(131条消息) clock_gettime 函数笔记_神秘的羔羊的博客-CSDN博客_clock_gettime

clock_gettime

1
2
3
4
5
6
7
8
9
10
11
12
#include<time.h>
int clock_gettime(clockid_t clk_id,struct timespec *tp);
//clk_id : 检索和设置的clk_id指定的时钟时间。
//CLOCK_REALTIME:系统实时时间,随系统实时时间改变而改变,即从UTC1970-1-1 0:0:0开始计时,中间时刻如果系统时间被用户改成其他,则对应的时间相应改变。
//CLOCK_MONOTONIC:从系统启动这一刻起开始计时,不受系统时间被用户改变的影响。
//CLOCK_PROCESS_CPUTIME_ID:本进程到当前代码系统CPU花费的时间。
//CLOCK_THREAD_CPUTIME_ID:本线程到当前代码系统CPU花费的时间。
struct timespec
{
time_t tv_sec; /* 秒*/
long tv_nsec; /* 纳秒*/
}

测试代码

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
#include <time.h>
#include <stdio.h>
#include <unistd.h>

int main(int argc, char **argv)
{
struct timespec time1 = {0, 0};
struct timespec time2 = {0, 0};

float temp;

clock_gettime(CLOCK_REALTIME, &time1);
usleep(1000);
clock_gettime(CLOCK_REALTIME, &time2);
temp = (time2.tv_nsec - time1.tv_nsec) / 1000000;
printf("time = %f ms\n", temp);
return 0;
}