我编写了一个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%?
答案 0 :(得分:9)
当您运行system
命令时,当前进程将暂停(不确定它是否是正确的术语,但不是以任何速率运行),等待您运行的命令结束。
当它被暂停时,其CPU使用率为0%,这是预期的。
要获取正确的信息,您必须在单独的线程或进程中运行system
命令,以便程序可以继续运行。