欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

时间

程序员文章站 2022-06-09 13:09:18
...

记录下linux中关于时间的一些内容。

程序关注的时间可能会有两点:

1.真实时间:这一时间的起点有两个

(1)某个标准点,也就是日历时间,可用于需要数据库记录或文件上打时间戳的程序

(2)进程生命周期的某个固定时点,称为流逝时间,主要用于需要周期性操作或定期从外部输入设备进行度量的程序

2.进程时间:一个进程所使用的时间总量,适用于对程序、算法性能的检查或优化。

日历时间

int gettimeofday(struct timeval *t,struct timezone *tz);
0 on success -1 on error

struct timeval {

               time_t      tv_sec;     /* seconds since Epoch*/
               suseconds_t tv_usec;    /* microseconds */

           };

struct tm {
               int tm_sec;         /* seconds */
               int tm_min;         /* minutes */
               int tm_hour;        /* hours */
               int tm_mday;        /* day of the month */
               int tm_mon;         /* month */
               int tm_year;        /* year */
               int tm_wday;        /* day of the week */
               int tm_yday;        /* day in the year */
               int tm_isdst;       /* daylight saving time */
           };

gettimeofday()成功调用会返回日历时间到tv所指向的缓冲区,参数tz始终设置为NULL

#include <time.h>
time_t time(time_t *t);

linux还提供了一个本质上相同的系统调用time(),time()返回自Epoch来的秒数,如果t不为空,还会将秒数置于t所指位置如果出错会返回(time_t)-1.

时间

将time_t转为可打印格式

char*ctime(const time_t *t);

日历时间和可打印格式的时间之间的相互转换参照上图.调用ctime() gmtime() localtime() asctime()的任一函数,都可能会覆盖其他函数的返回,且由静态分配的数据结构。所以要使用这些函数的返回信息,需要保存在本地副本中。

进程时间

#include <sys/times.h>
clock_t times(struct times *buf);
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 */
           };

times()成功返回的值要除以sysconf(_SC_CLK_TCK),出错返回(clock_t)-1

clock_t clock(void);
clock()返回值的计量单位是CLOCK_PER_SEC要除以这个值来获得进程所使用的CPU时间秒数


相关标签: 时间