当前位置:  技术问答>linux和unix

Linux中如何获取cpu使用率

    来源: 互联网  发布时间:2015-12-10

    本文导语:  我想到的方法是读取/proc/stat,但不同版本的Linux,它的输出是不同的。 第二种方法是使用top命令来查看,但如何获取其输出呢??我要做成一个c函数的方式供其他的程序调用,返回一个cpu使用率的值。 请各位大虾帮...

我想到的方法是读取/proc/stat,但不同版本的Linux,它的输出是不同的。
第二种方法是使用top命令来查看,但如何获取其输出呢??我要做成一个c函数的方式供其他的程序调用,返回一个cpu使用率的值。
请各位大虾帮帮忙!!谢了。

|
对/proc吧. 没有更好的方法了.

在网上搜搜,有一个库封装了读/proc系列值的函数.好像是ReadProc

|
top也是调的/proc里面的,你根据不同版本做不同的解析更好.

|
Extracting Information from /proc
Most of the entries in /proc provide information formatted to be readable by humans, but the formats are simple enough to be easily parsed. For example, /proc/cpuinfo contains information about the system CPU (or CPUs, for a multiprocessor machine). The output is a table of values, one per line, with a description of the value and a colon preceding each value.

For example, the output might look like this:

 
% cat /proc/cpuinfo 
processor       : 0 
vendor_id       : GenuineIntel 
cpu family      : 6 
model           : 5 
model name      : Pentium II (Deschutes) 
stepping        : 2 
cpu MHz         : 400.913520 
cache size      : 512 KB 
fdiv_bug        : no 
hlt_bug         : no 
sep_bug         : no 
f00f_bug        : no 
coma_bug        : no 
fpu             : yes 
fpu_exception   : yes 
cpuid level     : 2 
wp              : yes 
flags           : fpu vme de pse tsc msr pae mce cx8 apic sep 
mtrr pge mca cmov pat pse36 mmx fxsr 
bogomips        : 399.77 
We'll describe the interpretation of some of these fields in Section 7.3.1, "CPU Information."

A simple way to extract a value from this output is to read the file into a buffer and parse it in memory using sscanf. Listing 7.1 shows an example of this. The program includes the function get_cpu_clock_speed that reads from /proc/cpuinfo into memory and extracts the first CPU's clock speed.

Listing 7.1 (clock-speed.c) Extract CPU Clock Speed from /proc/cpuinfo
#include  
#include  
 
/* Returns the clock speed of the system's CPU in MHz, as reported by 
   /proc/cpuinfo. On a multiprocessor machine, returns the speed of 
   the first CPU. On error returns zero.  */ 
 
float get_cpu_clock_speed () 
{
   FILE* fp; 
   char buffer[1024]; 
   size_t bytes_read; 
   char* match; 
   float clock_speed; 
 
   /* Read the entire contents of /proc/cpuinfo into the buffer.  */ 
   fp = fopen ("/proc/cpuinfo", "r"); 
   bytes_read = fread (buffer, 1, sizeof (buffer), fp); 
   fclose (fp); 
   /* Bail if read failed or if buffer isn't big enough.  */ 
   if (bytes_read == 0 || bytes_read == sizeof (buffer)) 
     return 0; 
   /* NUL-terminate the text.  */ 
   buffer[bytes_read] == ''; 
   /* Locate the line that starts with "cpu MHz".  */ 
   match = strstr (buffer, "cpu MHz"); 
   if (match == NULL) 
     return 0; 
   /* Parse the line to extract the clock speed.  */ 
   sscanf (match, "cpu MHz  :  %f", &clock_speed); 
   return clock_speed; 

 
 
 
 int main () 
{
   printf ("CPU clock speed: %4.0f MHzn", get_cpu_clock_speed ()); 
   return 0; 

Be aware, however, that the names, semantics, and output formats of entries in the /proc file system might change in new Linux kernel revisions. If you use them in a program, you should make sure that the program's behavior degrades gracefully if the /proc entry is missing or is formatted unexpectedly.


    
 
 

您可能感兴趣的文章:

  • 弱弱的问:如何得到某一时刻linux的cpu使用率以及使用曲线
  • 如何获得Linux的CPU使用率
  • 怎么写个CGI程序获取远程linux主机的信息,如cpu使用率,内存使用等?
  • 有谁知道linux操作系统察看cpu使用率的命令,回答正确给高分,急,在线等待!!!
  • 在linux下如何将cpu和内存的使用率保存到mysql或者日志文件中?
  • 如何限制linux服务器用户cpu和mem的使用率
  • 如何在Linux下实现取得虚拟内存的使用率?
  • Red Hat Linux 9在图形界面下内存使用率为什么很高?
  • 在linux下取系统信息,网卡带宽,内存使用率,CPU,I/O状态,网络状态的命令分别是什么?
  • linux中到底有没有获取CPU使用率的API?
  • 请问LINUX下有没有查看CPU使用率的命令?
  • linux如何用vmstat获取当前CPU使用率
  • [急]linux对于c 如何获得一个进程及其子进程从开始到结束 它的最大CPU% MEM%使用率
  • 如何使LINUX机器CPU使用率为100%的办法。
  • 求助:java实现显示linux下的cpu占用率,内存使用情况,硬盘占用情况
  • 怎么样用程序取得Linux系统的CPU利用率和内存的使用情况呀?
  • 要得到进程的虚拟内存使用率,请问linux系统下有哪几个函数可用?
  • 用JAVA取得LINUX系统的CPU使用率,关于LINUX版本问题(在线等)
  • 如何在C程序中获得linux下硬盘的使用率?
  • linux使用管道命令执行ps获取cpu与内存占用率
  • linux不用命令方式读文件获取网络流量,如何使用C函数调用获取网络流量信息?
  • linux获取主机名后用gethostbyname() 不能获取主机ip
  • 新手问题:Linux下如何获取进程占用的系统资源
  • LINUX下获取WINDOWS用户(组)和系统服务?
  • 关于在linux获取系统软件信息
  • linux dhcpv6概率获取不到地址
  • linux 内核空间如何获取当前时间(常用格式)
  • Linux下如何获取屏幕分辨率?
  • Linux 如何获取 所有的接口信息
  • linux程序获取显示器个数
  • 怎样获取超过4G的Linux Regular文件的大下?
  •  
    本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
    本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。












  • 相关文章推荐
  • Docker官方镜像将会使用Alpine Linux替换Ubuntu
  • linux支持ti-rpc么?ti-rpc在linux中是不是只使用udp协议,不能使用tcp协议
  • linux下free命令显示的内存使用情况分析
  • 求redhat linux 9.0下可以使用的oracle 10g或9i,还有redhat linux 9.0下可以使用的eclipse下载地址
  • linux下不使用sudo命令执行docker的操作步骤
  • 在XP下使用VMWare安装了Linux AS 5.6之后,使用FTP工具可以远程连接Linux,而在cmd命令行中却连接不上,什么原因 ?
  • 如何使用linux下gdb来调试python程序
  • 原来装了linux和win2k,使用LiLO启动,现在重新win2k,如何恢复使用LILO来引导使得Linux可用
  • linux/Centos/ubuntu下如何使用umask命令修改新建文件时的默认权限
  • 在shell中使用数组需要什么特殊的条件马? 怎么在有的linux下能够用,在有的linux下就不能能使用?
  • linux下c/c++使用hash_map方法介绍
  • asp程序使用的access在Linux下如何使用!
  • linux下objdump命令用法介绍及如何使用objdump命令进行反汇编
  • [请置顶]关于Linux的安装使用问题 请放到 软件使用/操作系统 里提问
  • linux下top命令详解包括top命令参数使用及结果(virt,res,shr)排序举例说明
  • 新装的Linux使用root用户不能使用FTP?
  • linux top命令详解以及top命令的各项使用技巧详细说明
  • LINUX下使用Eclipse,如何使用交叉编译器?
  • linux系统下使用使用性能监视工具的前提?
  • 使用VWMARE安装linux的内存使用问题
  • 嵌入式Linux使用外挂Vsftpd不能正常使用, 请高手解答,谢谢。
  • linux c/c++ IP字符串转换成可比较大小的数字
  • 在win分区上安装linux和独立分区安装linux有什么区别?可以同时安装吗?(两个linux系统)
  • linux哪个版本好?linux操作系统版本详细介绍及选择方案推荐
  • 在虚拟机上安装的linux上,能像真的linux系统一样开发linux程序么?
  • secureCRT下Linux终端汉字乱码解决方法
  • 我重装window后,把linux的引导区覆盖了,进不了linux怎么办?急啊,望热心的人帮助 (现在有linux的盘)
  • Linux c字符串中不可打印字符转换成16进制
  • 安装vmware软件,不用再安装linux系统,就可以模拟linux系统了,然后可以在其上学习一下LINUX下的基本操作 了?
  • Linux常用命令介绍:更改所属用户群组或档案属性
  • 红旗Linux主机可以通过127.0.0.1访问,但如何是连网的Win2000机器通过Linux的IP去访问Linux


  • 站内导航:


    特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

    ©2012-2021,,E-mail:www_#163.com(请将#改为@)

    浙ICP备11055608号-3