/proc文件系统
/proc虚拟文件系统,因为其包含的文件和子目录并未存储于磁盘上,而是由内核在进程访问此类信息时动态创建而成。
/proc 各种系统信息
/proc/net 有关网络和套接字的状态信息
/proc/sys/fs 文件系统相关设置
/proc/sys/kernel 各种常规的内核设置
/proc/sys/net 网络和套接字的设置
/proc/sys/vm 内存管理设置
/proc/sysvipc 有关system v ipc对象的信息
通常使用shell脚本来访问/proc目录下的文件,例如使用如下shell命令,就可以修改和查看/proc目录下的文件内容:
echo 10000 > /proc/sys/kernel/pid_max
cat /proc/sys/kernel/pid_max
#include <sys/stat.h> #include <fcntl.h> #include <unistd.h> #include <string.h> #include <stdio.h> #include <stdlib.h> #define MAX_LINE 100 int main(int argc, char *argv[]) { int fd; char line[MAX_LINE]; ssize_t n; fd=open("/proc/sys/kernel/pid_max", (argc>1)?O_RDWR:O_RDONLY); if(fd==-1) { printf("open failed!"); exit(-1); } n=read(fd, line, MAX_LINE); if(n==-1) { printf("read failed!"); exit(-1); } if(argc>1) printf("Old value: "); printf("%.*s", (int)n, line); if(argc>1) { if(write(fd, argv[1], strlen(argv[1])) != strlen(argv[1])) { printf("write() failed"); exit(-1); } system("echo /proc/sys/kernel/pid_max now contains " "`cat /proc/sys/kernel/pid_max`"); } exit(EXIT_SUCCESS); }