特殊文件这一章讲了两种特殊文件,一种是符号链接一种是proc文件系统。/proc目录下的文件是系统运行进程的映像,它是一个伪文件系统,这些文件只存在于内存之中,不占用外部存储空间。
proc文件系统不是普通意义上的文件系统,它既是一个到运行进程地址空间的访问接口,同时又是一个访问内核数据的结构。用户和应用程序可以通过proc得到系统的信息和运行中的进程信息,这是两个主要的功能。能够访问系统内核的信息,同时也能修改内核的信息,达到配置系统的目的。
对于proc文件系统两个不同的功能,设计了两个不同的程序进行测试。
1、读取内核信息
内核信息包括很多,其中包括:
(1)CPU型号和类型
(2)使用的Linux内核版本
(3)从系统最后一次启动以来经历的时间
(4)总共有多少CPU时间执行在用户态、系统态和空闲态。
(5)配置内存大小
(6)当前可用内存数
(7)磁盘读写请求数
(8)内核已经进行多少次进程上下文切换
(9)从系统创建以来创建的进程数
(10)平均系统负载列表
(11)系统最后的启动时间
测试程序分为三个版本,STANDARD版本、SHORT版本和LONG版本。STANDARD版本输出(1)、(2)、(3);SHORT版本输出(4)、(7)、(8)、(9)、(11);LONG版本输出(5)、(6)、(10)。
int get_load_avg() { char line_buf[MAX]; int fd; int n; int res = -1; if((fd = open("/proc/loadavg", O_RDONLY)) == -1){ /* 打开存储系统平均负载的porc文件 */ perror("fail to loadavg"); return -1; } if((n = read(fd, line_buf, MAX)) == -1){ /* 读取系统平均负载的内容 */ perror("fail to read"); goto err; } line_buf[n] = '