我想用C获取应用程序的总CPU使用率,就像我们在TaskManager中得到的CPU总使用量一样...... 我想知道...对于windows和linux ::当前所有进程的总CPU利用率......正如我们在任务管理器中看到的那样。
答案 0 :(得分:10)
这是特定于平台的:
GetProcessTimes()
功能。clock()
。这些可用于测量两个时间间隔之间的CPU时间。
编辑:
要获得CPU消耗(以百分比表示),您需要将CPU总时间除以操作系统看到的逻辑核心数,然后除以总挂钟时间:
% CPU usage = (CPU time) / (# of cores) / (wall time)
获取逻辑核心数也是特定于平台的:
GetSystemInfo()
sysconf(_SC_NPROCESSORS_ONLN)
答案 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)
这就是我想要的东西。以我的方式操纵它,我成功地运行它。