2011-12-14 35 views
5

我想获得C中应用程序的总CPU使用率,总CPU使用率就像我们在TaskManager中得到的一样... 我想知道...对于windows和linux :: current所有CPU使用率进程......正如我们在任务管理器中看到的那样。如何获得C中的CPU使用率?

+2

什么操作系统?你想知道你的过程或其他过程的答案吗? – 2011-12-14 08:58:58

+0

好吧,在Windows(准确的说是7)...我想知道...当前所有进程的总CPU利用率.....正如我们在任务管理器中看到的一样。 – Ronin 2011-12-14 10:24:32

+0

请编辑问题以反映这个新的信息。 – 2011-12-14 10:31:12

回答

10

这是特定于平台的:

  • 在Windows中,你可以使用GetProcessTimes()功能。
  • 在Linux中,您实际上可以使用clock()

这些可用于测量两个时间间隔之间所花费的CPU时间量。

编辑:

为了让CPU消耗(百分比),则需要通过操作系统会将逻辑内核的#总的CPU时间划分,然后由总壁分开 - 时钟时间:

% CPU usage = (CPU time)/(# of cores)/(wall time) 

获取逻辑核心的#也特定于平台的:

1

在POSIX下,你想要的getrusage(2)的ru_utime场。使用RUSAGE_SELF仅用于调用进程,RUSAGE_CHILDEN用于所有终止并等待(2)已编辑的子进程。 Linux也只支持RUSAGE_THREAD调用线程。如果您想要系统时间,可以使用ru_stime,可以使用ru_utime来总结主动运行的总时间(而不是挂钟时间)。

1

它通常是特定于操作系统的。

您可以使用clock函数,返回clock_t(某些整数类型,也许可能是long)。在Linux系统上,它测量CPU时间(以微秒为单位)。