times() - Unix,Linux系统调用 - 技术教程
Tutorials Point


  Unix初学者指南
  Unix Shell编程
  高级Unix
  Unix有用参考
  Unix有用资源
  精选阅读

版权所有 © 2014 tutorialspoint



  首页     参考资料     讨论论坛     关于TP  

times() - Unix,Linux系统调用


previous next AddThis Social Bookmark Button

广告

名称

times - 获取进程时间

概要

#include <sys/times.h>

clock_t times(struct tms *buf);

描述

times() 将当前进程时间存储在buf指向的struct tms中。struct tms<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 */
};

tms_utime字段包含调用进程执行指令所花费的CPU时间。tms_stime字段包含系统代表调用进程执行任务时所花费的CPU时间。tms_cutime字段包含所有已等待终止子进程的tms_utimetms_cutime值的总和。tms_cstime字段包含所有已等待终止子进程的tms_stimetms_cstime值的总和。

已终止子进程(及其后代)的时间在wait(2) 或waitpid(2) 返回其进程 ID 时被添加。特别是,子进程未等待的孙进程的时间永远不会被看到。

所有报告的时间都以时钟滴答表示。

返回值

times() 返回自过去某个任意点以来经过的时钟滴答数。对于Linux 2.4和更早版本,此点是系统启动的时刻。从Linux 2.6开始,此点是系统启动时间之前的(2^32/HZ) - 300(即约4.29亿)秒。返回值可能会超过clock_t类型的可能范围。发生错误时,返回(clock_t) -1,并相应地设置errno

注释

每秒的时钟滴答数可以使用sysconf(_SC_CLK_TCK) 获取;在POSIX-1996中,提到了在<time.h>中定义的符号CLK_TCK已过时。它现在已经过时。

在2.6.9之前的Linux内核版本中,如果SIGCHLD的处理方式设置为SIG_IGN,则已终止子进程的时间会自动包含在tms_cstimetms_cutime字段中,尽管POSIX.1-2001指出这只有在调用进程wait()其子进程时才会发生。这种不符合标准的情况在Linux 2.6.9及更高版本中得到了纠正。

在Linux上,可以将buf参数指定为NULL,结果是times() 只返回函数结果。但是,POSIX没有指定此行为,大多数其他Unix实现都需要buf的非NULL值。

请注意,clock(3) 返回的clock_t类型的值不是以时钟滴答为单位测量的,而是以CLOCKS_PER_SEC为单位测量的。

符合标准

SVr4, 4.3BSD, POSIX.1-2001。

历史注释

SVr1-3返回long,并且结构成员的类型为time_t,尽管它们存储的是时钟滴答,而不是自纪元以来的秒数。V7使用long作为结构成员,因为它还没有time_t类型。

在较旧的系统上,每秒的时钟滴答数由变量HZ给出。

参见



previous next Printer Friendly

广告


  

广告



广告
© . All rights reserved.