版权所有 © 2014 tutorialspoint
clock_t times(struct tms *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 */ };
tms_utime字段包含调用进程执行指令所花费的CPU时间。tms_stime字段包含系统代表调用进程执行任务时所花费的CPU时间。tms_cutime字段包含所有已等待终止子进程的tms_utime和tms_cutime值的总和。tms_cstime字段包含所有已等待终止子进程的tms_stime和tms_cstime值的总和。
已终止子进程(及其后代)的时间在wait(2) 或waitpid(2) 返回其进程 ID 时被添加。特别是,子进程未等待的孙进程的时间永远不会被看到。
所有报告的时间都以时钟滴答表示。
在2.6.9之前的Linux内核版本中,如果SIGCHLD的处理方式设置为SIG_IGN,则已终止子进程的时间会自动包含在tms_cstime和tms_cutime字段中,尽管POSIX.1-2001指出这只有在调用进程wait()其子进程时才会发生。这种不符合标准的情况在Linux 2.6.9及更高版本中得到了纠正。
在Linux上,可以将buf参数指定为NULL,结果是times() 只返回函数结果。但是,POSIX没有指定此行为,大多数其他Unix实现都需要buf的非NULL值。
请注意,clock(3) 返回的clock_t类型的值不是以时钟滴答为单位测量的,而是以CLOCKS_PER_SEC为单位测量的。
在较旧的系统上,每秒的时钟滴答数由变量HZ给出。
time (1)
getrusage (2)
wait (2)
广告