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

bha*_*_sg 7 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");
Run Code Online (Sandbox Code Playgroud)

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

Jea*_*bre 9

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

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

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