睡眠和时钟方法

时间:2018-05-12 09:40:01

标签: ubuntu c time

int main(void){

    int start = clock();
    sleep(5);
    int end = clock();

    printf("%d", (end - start));
    return 0;
}

当我在ubuntu中执行此代码时,我得到结果30;但是,我通过sleep()方法在5秒内暂停该过程。为什么结果等于30?

如何计算流程的暂停时间?

1 个答案:

答案 0 :(得分:3)

clock()函数返回自进程启动以来使用的CPU时间量。要以秒为单位获取数字,您应该除以常数CLOCKS_PER_SEC

在大多数情况下,睡眠呼叫中不会使用或只需很少的CPU时间(我总是回零)。

您可以使用time()获取挂钟时间的秒数:

#include <stdio.h>
#include <time.h>
#include <unistd.h>

int main(void) {

  time_t start = time(NULL);
  sleep(5);
  time_t end = time(NULL);

  printf("%.1f\n", difftime(end, start));

  return 0;
}

对于时间短的间隔gettimeofday()可能更有用,因为它提供微秒粒度而不是仅仅秒,如time()