`
CreazyApple
  • 浏览: 61411 次
  • 性别: Icon_minigender_1
  • 来自: 成都
文章分类
社区版块
存档分类
最新评论

读取linux /proc/文件信息,用GTK编程实现简单的系统管理器

阅读更多

源程序附最后(也可直接打包下载http://download.csdn.net/detail/creazyapple/4088149

要求:

理解和分析/proc文件

内容

了解/proc文件的特点和使用方法。

监控系统状态,显示系统中若干部件的使用情况。

用图形界面显示系统监控状态。

 

相关原理:

 

 

用户和应用程序可以通过/proc得到系统的信息,并可以改变内核的某些参数。由于系统的信息是动态改变的,所以用户或应用程序读取proc文件时,proc文件系统是动态从系统内核读出所需信息并提交的。

我们要显示系统信息,只需进行相应的文件操作。首先打开相应的文件,读取所需要的信息,将其写入一个缓冲区中,然后将缓冲区的内容加到Gtk的相应的控件上面去,最后将控件组合显示即可

/proc/文件结构参考:http://blog.csdn.net/ubuntulover/article/details/4449787

比如我们如果要读取cpu信息,可以在控制台下输入命令:cat /proc/cpuinf

 

要得到内存信息,可以输入命令:cat /proc/meminfo

这只是冰山一角,仅此我们已经看到/proc目录下文件内容之丰富。

要想编程读取这些信息,首先我们要了解/proc结构,了解其各种信息的排布,然后就像读普通文件一样将其筛选出来。

比如,查看系统的cpu频率,属于cpu信息:more /proc/cpuinfo (注,命令more 和cat功能相似,都是显示一个文件的内容)

其排布为如下:



我们也就知道,cpuinf文件中,一种信息放一行,因此我们一行一行的遴选信息。

首先需将cpuinf文件读出来,

 


然后进行字符串匹配,找到含有“cpu MHz”这个字符串的一行,读出来即可。

 

其它如模块信息、内存信息,类似处理,字要你了解了其结构,就可以方便的读出来

所以关键有3点:1、你知道信息在哪里;2、你看到了信息的排列方式;3、设计算法剔除无用信息。

 

而对于进程信息,稍复杂。

我们先看看进程信息放在哪里的:首先进入 /proc 目录并查看该目录下的文件:

蓝色的是目录(所谓的文件夹),绿色的是文件,文件中有cpuinf、meminfo等,我们之前已经看过。现在看看那些蓝色的以数字为名的文件夹,他们正是保存进程信息的!

目录1存储的是PID为1的进程的信息,目录2存储的是PID为2的进程的信息……

我们试着进入这些目录看看!

里面有一些目录和文件,其中有个status文件,打开看看:

看到了吧,很清晰地罗列出了进程1的信息,名字是init,状态Sleeping ,PID是1……

由此得知,要读取所有进程的信息列表,我们需要循环打开/proc文件夹下所有以数字命名的目录。

大致过程为:

 


好了,现在弄清楚了原理,就可以动手实现了。但是需要一个界面呀,这里我们继续用GTK来画界面。

 

关于GTK这里就不多说了。

最后实现界面截图:

杀死进程:

刷新列表:

 

最后,附上源程序。共11个文件,将其放入一个文件夹下,编译命令:gcc -o sb *.c `pkg-config --cflags --libs gtk+-2.0`(当然首先得配置好了GTK,

参考上一篇博客 ubuntu GTK+eclipse 配置 http://blog.csdn.net/creazyapple/article/details/7290443)

 

 












 

 

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics