Linux中的Windows GetSystemTimes()函数是否等效?

时间:2013-02-28 20:41:26

标签: linux windows

在Windows中有一个名为GetSystemTimes()的函数,它返回系统空闲时间,执行内核代码所花费的时间以及执行用户模式代码所花费的时间。

linux中是否有等效的功能?

1 个答案:

答案 0 :(得分:3)

原始答案提供了获取当前正在运行的进程的用户和系统时间的解决方案。但是,您需要有关整个系统的信息。据我所知,获取此信息的唯一方法是解析/proc/stat的内容。特别是第一行,标记为cpu

cpu  85806677 11713309 6660413 3490353007 6236822 300919 807875 0

如果您正在运行SMP系统,则后跟每cpu个摘要。该行本身具有以下信息(按顺序):

  • 用户模式下的时间
  • 具有低优先级的用户模式下的时间
  • 系统模式下的时间
  • 时间闲置
  • 等待I / O完成的时间
  • 时间服务中断
  • 时间服务软件中断
  • 虚拟化时间

时间以USER_HZ为单位报告。

此后可能还有其他列,具体取决于内核的版本。

原始答案:


您想要times(2)

  

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

空闲时间可以从追踪经过的挂钟时间推断出来,并减去通话中报告的非空闲时间。