读取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文件读出来,
?
蓝色的是目录(所谓的文件夹),绿色的是文件,文件中有cpuinf、meminfo等,我们之前已经看过。现在看看那些蓝色的以数字为名的文件夹,他们正是保存进程信息的!
目录1存储的是PID为1的进程的信息,目录2存储的是PID为2的进程的信息……
我们试着进入这些目录看看!

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

看到了吧,很清晰地罗列出了进程1的信息,名字是init,状态Sleeping ,PID是1……
由此得知,要读取所有进程的信息列表,我们需要循环打开/proc文件夹下所有以数字命名的目录。
大致过程为:
?


杀死进程:
刷新列表:



?
最后,附上源程序。共11个文件,将其放入一个文件夹下,编译命令:gcc -o sb *.c `pkg-config --cflags --libs gtk+-2.0`(当然首先得配置好了GTK,
参考上一篇博客 ubuntu GTK+eclipse 配置 http://blog.csdn.net/creazyapple/article/details/7290443)
?
?
?
?