当前位置: 技术问答>linux和unix
急!!Linux下如何用C程序查出当前的CPU、硬盘、内存的使用情况(近日结贴)
来源: 互联网 发布时间:2015-07-18
本文导语: 要求能够得出CPU占用率,硬盘使用情况和内存占用率等信息,最好能给个例子,谢谢了 | 尝试/proc/sys/下面的文件,有cpu,硬盘,内存的信息,你可以把他们的输出重定向到文件,如使用system("...
要求能够得出CPU占用率,硬盘使用情况和内存占用率等信息,最好能给个例子,谢谢了
|
尝试/proc/sys/下面的文件,有cpu,硬盘,内存的信息,你可以把他们的输出重定向到文件,如使用system("cat /proc/sys/cpu > cpu_info"),然后在程序中打开这个文件,进行分析即可。
|
写个shell程序(假设为t).分别读取/proc/cpuinfo(cpu信息), /proc/meminfo(内存信息)和/proc/partitions(硬盘信息)
然后在c中执行
system("t>systeminfo");
然后在systeminfo中就可以获得你需要的信息了.
然后在c中执行
system("t>systeminfo");
然后在systeminfo中就可以获得你需要的信息了.
|
/proc/stat 里有cpu的某一时刻的用户模式, 低优先级模式, 系统模式和空闲模式的时间,
分别用u, n, s, i代表.
在一段时间内, 记下u, n, s, i的变化量, 设为du, dn, ds, di,
那么100%-di / (du + dn + ds + di) 的百分比, 就是在这一段时间内CPU占用率,
/proc/meminfo 有内存使用情况,Mem 后的数字表示 total,used,free,shared,buffers,cached, 内存使用率 = used/total%
分别用u, n, s, i代表.
在一段时间内, 记下u, n, s, i的变化量, 设为du, dn, ds, di,
那么100%-di / (du + dn + ds + di) 的百分比, 就是在这一段时间内CPU占用率,
/proc/meminfo 有内存使用情况,Mem 后的数字表示 total,used,free,shared,buffers,cached, 内存使用率 = used/total%
|
top -n 1 > top.log
df > df.log
然后就可以到top.log读取cpu占用率
到df.log读取磁盘空间信息。
至于内存可以直接到/proc/meminfo读取
当然也可以在top.log里直接读
/dev/sda7 2522048 212664 2181268 9% /
/dev/sda1 1004024 29636 923384 4% /boot
/dev/sda6 4032092 997368 2829900 27% /home
以上是df命令的结果
11:01am up 1:02, 3 users, load average: 0.03, 0.05, 0.04
85 processes: 82 sleeping, 3 running, 0 zombie, 0 stopped
CPU states: 17.1% user, 13.2% system, 0.0% nice, 69.6% idle
Mem: 254948K av, 249524K used, 5424K free, 0K shrd, 9468K buff
Swap: 1020088K av, 0K used, 1020088K free 179072K cached
以上是top命令的结果
df > df.log
然后就可以到top.log读取cpu占用率
到df.log读取磁盘空间信息。
至于内存可以直接到/proc/meminfo读取
当然也可以在top.log里直接读
/dev/sda7 2522048 212664 2181268 9% /
/dev/sda1 1004024 29636 923384 4% /boot
/dev/sda6 4032092 997368 2829900 27% /home
以上是df命令的结果
11:01am up 1:02, 3 users, load average: 0.03, 0.05, 0.04
85 processes: 82 sleeping, 3 running, 0 zombie, 0 stopped
CPU states: 17.1% user, 13.2% system, 0.0% nice, 69.6% idle
Mem: 254948K av, 249524K used, 5424K free, 0K shrd, 9468K buff
Swap: 1020088K av, 0K used, 1020088K free 179072K cached
以上是top命令的结果
|
CPU:top
硬盘:df
内存:free
硬盘:df
内存:free
|
You can call sysinfo function to get the information of memory and call fstatfs function to get the information of disk.