如何在C中获得CPU使用率?

时间:2011-12-14 08:56:32

标签: c cpu

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

4 个答案:

答案 0 :(得分:10)

这是特定于平台的:

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

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

编辑:

要获得CPU消耗(以百分比表示),您需要将CPU总时间除以操作系统看到的逻辑核心数,然后除以总挂钟时间:

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

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

答案 1 :(得分:2)

在POSIX下,你需要getrusage(2)的ru_utime字段。仅对调用进程使用RUSAGE_SELF,对所有已终止和等待(2)编辑的子进程使用RUSAGE_CHILDEN。 Linux也仅为调用线程支持RUSAGE_THREAD。如果你想要系统时间,可以使用ru_stime,可以用ru_utime总计主动运行的总时间(不是挂起时间)。

答案 2 :(得分:1)

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

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

答案 3 :(得分:-1)

这就是我想要的东西。以我的方式操纵它,我成功地运行它。

Get total CPU usage