/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);
}
posted @ 2022-04-07 20:52  东宫得臣  阅读(64)  评论(0编辑  收藏  举报