时间
2019-06-16 本文已影响0人
loopppp
- 在linux中时间分为真实时间和进程时间,真实时间就是生活中的日历时间;而进程时间就是一个进程占用的cpu时间
- 真实时间用time_t类型来定义,time函数返回自Epoch以来的秒数,通常配合ctime转换函数使用;localtime可以将一个time_t类型的参数分解为对应于本地系统的一个分解时间(tm结构体);mktime是localtime的逆过程,将一个tm结构体还原为time_t类型;tm结构体也可以通过asctime函数来转换为字符串;函数原型以及结构体如下
#include <time.h>
struct tm {
int tm_sec; /* Seconds (0-60) */
int tm_min; /* Minutes (0-59) */
int tm_hour; /* Hours (0-23) */
int tm_mday; /* Day of the month (1-31) */
int tm_mon; /* Month (0-11) */
int tm_year; /* Year - 1900 */
int tm_wday; /* Day of the week (0-6, Sunday = 0) */
int tm_yday; /* Day in the year (0-365, 1 Jan = 0) */
int tm_isdst; /* Daylight saving time */
};
time_t time(time_t *tloc);
char* ctime(const time_t* timep);
struct tm *localtime(const time_t *timep);
char *asctime(const struct tm *tm);
time_t mktime(struct tm *tm);
- 进程时间又分为两部分,分别是用户cpu时间和系统cpu时间;分别指程序运行时cpu处于用户态和内核态的时间;一般使用times函数获得调用进程的进程时间,记录cpu时间的数据类型为clock_t,该类型以时钟计时单元为单位度量,一般可以使用sysconf(_SC_CLK_TCK)调用获取当前计算机每秒所包含的时钟计时单元数,然后相除就可以获得进程时间的秒数;返回的结构体中的前两个成员描述的是调用进程到目前为止的用户时间和系统时间;而后两个成员描述的是所有已经终止了的子进程的相关进程时间,对应原型及结构体如下
#include <sys/times.h>
struct tms {
clock_t tms_utime; /* user time */
clock_t tms_stime; /* system time */
clock_t tms_cutime; /* user time of children */
clock_t tms_cstime; /* system time of children */
};
clock_t times(struct tms *buf);