【Linux编译内核】proc文件系统

1.proc文件系统的概念

proc文件系统是一种在用户态检查内核状态的机制。
不仅可以获得系统状态,还可以修改。

2.proc文件系统的特点

每个文件都规定了严格的权限
是否可读?是否可写?
哪个用户可读?哪个用户可写?
可以由用户自己添加一个/proc目录下的文件
可以由任何程序读取

3.读文件的程序

#include<stdio.h>/* 这里是头文件,如果你不懂什么是头文件,写上总没有错的 */

main()          /* 这里是程序的入口点 */
{
    char buffer[100];   /* 定义一块100个字节大小的内存 */
    FILE *fp;       /* 定义文件指针,如果你不懂,照搬就可以了 */

    fp = fopen("/etc/passwd","r");
/* 打开文件,fopen是C库函数,有两个参数,第一个是文件名 */
/* 第二个是打开方式,"r"表示读,"r+"表示写,"w"表示先清空文件再写 */
    if(fp == NULL)
/* fp作为fopen的返回值,如果为NULL,则表示文件打开不成功,比如文件不存在 */
    printf("File could not be opened\n");/* 如果不成功,应该告诉用户 
    else                /* 如果文件打开成功了 */
    {
        while(1)    /* 这里是一个死循环,因为1的含义永远是“真” */
        {
            if(fgets(buffer, 100, fp) == NULL)  
/* 从文件里面读一行(不超过100个字节),保存在buffer里面 */
                break;      
/* 如果fgets的返回值为NULL,说明到达文件末尾,这时应该跳出循环 */
            printf("%s",buffer);/* 把buffer里面读到的内容显示出来 */
        }
        fclose(fp);/* 好了,所有任务完成了,关闭文件 */
    }
    return 0;   /* 程序结束,退出 */
} 

保存并编译这个程序:
gcc –o readfile readfile.c
运行这个程序。
./readfile
观察结果,这个程序读出了/etc/passwd文件的内容。

4.处理程序中的参数

怎样改编这个程序,让它能读任何用户指定的文件?
如readfile /proc/meminfo
或readfile /proc/cpuinfo
当我们编写一个程序readfile,但是用户以这样的方式去运行:
./readfile /proc/meminfo /proc/cpuinfo …
程序如何知道用户传入的参数?
main(int argc, char **argv)
argc:参数的个数(readfile算作第一个)
argv:字符串数组,argv[0]表示readfile程序的
名字,argv[1]表示第一个参数,依次类推

 #include<stdio.h>

 main(int argc,char **argv)
 {
     char buffer[100];
     FILE *fp;
     int i=1;
     while(i<argc){
         fp=fopen(argv[i],"r");
         if(fp==NULL)
            printf("File could not be opened\n");
        else{
            while(1){
                if(fgets(buffer,100,fp)==NULL)
                    break;
                printf("%s",buffer);
            }
        }
        i=i+1;
        fclose(fp);
     }
return 0;
 }
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值