UNIX系统使用两种不同的时间值:
1. 日历时间。该值为1970年1月1日00:00:00以来国际标准时间(UTC)所经过的秒数。
系统基本数据类型time_t用于保存这种时间值。
2. 进程时间。也成CPU时间,用来度量进程中使用的CPU资源。进程时间以时钟滴答计算。
系统基本数据类型clock_t用于保存这种时间值。
度量一个进程的执行时间时,UNIX系统使用3个进程时间值:
1. 时钟时间
2. 用户CPU时间
3. 系统CPU时间
其中时钟时间也成“墙上时钟时间(wall clock time)”。它是进程运行的时间总量,值与系统中同时运行的进程数有关。
用户CPU时间时执行用户指令所用的时间。
系统CPU时间时为该进程执行内核程序所用时间。
用户CPU时间和系统CPU时间之和称CPU时间。
如何进程都可以调用times函数来获取它自己及已终止子进程的3个进程时间值。
#include <sys/times.h>
clock_t times(struct tms *buf);
//成功返回流逝的墙上时钟时间(单位:时钟滴答数)。出错返回-1。
tms结构如下:
struct tms{
clock_t tms_utime; //user CPU time
clock_t tms_stime; //system CPU time
clock_t tms_cutime; //user CPU time, terminated children
clock_t tms_cstime; //system CPU time, terminated children
};
tms结构不包含墙上时钟时间,但times函数可以返回墙上时钟时间。
tms中的clock_t值可以通过比上 sysconf(_SC_CLK_TCK)变换成秒数。