进程信息之times系统调用

来源:互联网 发布:mathcad怎么求解矩阵 编辑:程序博客网 时间:2024/05/21 22:53

unix提供了times系统调用用于获取进程及其子进程的运行时间。

long sys_times(struct tms* tbuf);struct tms {    clock_t tms_utime;    clock_t tms_stime;    clock_t tms_cutime;    clock_t tms_cstime;};(32位系统下clock_t为long类型)

tms_utime为程序在用户态下运行的时间。
tms_stime为程序在内核态下运行的时间。
tms_cutime为程序的所有子进程用户态下运行的时间。
tms_cstime为程序的所有子进程内核态下运行的时间。

当times执行失败,返回-1。当times执行成功,返回系统开机到现在的运行时间(记住不是程序运行的时间)。

本文中计时都是使用clock_t的方式。该类型的值可以通过除以函数sysconf (_SC_CLK_TCK)的返回值获取秒数。
注意这里的clock_t与clock函数的clock_t是不同的。可看clock函数源码

clock_tclock (void){  struct tms buf;  long clk_tck = __sysconf (_SC_CLK_TCK);  __times (&buf);  return    (clk_tck <= CLOCKS_PER_SEC)    ? ((unsigned long) buf.tms_utime + buf.tms_stime) * (CLOCKS_PER_SEC                             / clk_tck)    : ((unsigned long) buf.tms_utime + buf.tms_stime) / (clk_tck                             / CLOCKS_PER_SEC);}