时间

记录下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时间秒数


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值