当我从进程内检查进程的CPU使用情况时,top命令返回0%的CPU使用率

时间:2016-11-02 20:08:19

标签: c bash

我编写了一个C程序,需要获得自己的CPU和内存使用量。所以我写了这样的东西:

        system("prs_pid=`ps | grep prs-m1 | awk '{print $1}'` \n top -n1 | grep -m1 $prs_pid | \
                    awk '{print \"prs_cpu:\" $7 \"\\nprs_mem:\" $6}' >> /stats");

我的应用程序名称是prs,我做了PS并得到了我的进程的pid,然后想要从运行TOP获得CPU使用率。该程序报告它使用2%内存和0%CPU。但是,在cmd上手动运行相同的命令会返回相同的memry用法,但是我可以通过运行top来验证有效的非零CPU。我不明白为什么从系统内部尝试时cpu的使用总是0%?

1 个答案:

答案 0 :(得分:9)

当您运行system命令时,当前进程将暂停(不确定它是否是正确的术语,但不是以任何速率运行),等待您运行的命令结束。

当它被暂停时,其CPU使用率为0%,这是预期的。

要获取正确的信息,您必须在单独的线程或进程中运行system命令,以便程序可以继续运行。