在/proc文件系统中添加和删除文件
来源:互联网 发布:淘宝图标 编辑:程序博客网 时间:2024/05/20 18:48
在Linux-2.6.18内核中编写一个内核模块,其功能是在/proc文件系统中增加一个目录hello,并在这个目录中增加一个文件world,文件的内容为hello world。
代码附录在博文的末尾
1. 在/目录中新建一个目录test,在test目录中新建一个目录proc_t,用于编写内核模块
cd /mkdir testcd testmkdir proc_tcd proc_t
2. 在proc_t目录中,新建文件proc.c和Makefile
注:Makefile的大小写不能错,如果写成makefile、MakeFile、makeFile等,则不行。
请参考以下教程进行新建(如何使用vim命令修改或新建文件):点击打开链接
http://blog.csdn.net/softimite_zifeng/article/details/53303856
2.1. 新建proc.c
vim proc.c
2.2. 新建Makefile
vim Makefile
2.3. 查看proc_t目录下的文件
ls
3. 编译模块
make4. 载入模块
insmod proc.ko5. 在/proc文件系统中查看
cd /proclscd hellolscat world
6. 卸载模块
rmmod proc7. 清除编译结果
make clean
1. 跳转至/proc文件下,查看已有文件,此时没有名为hello的目录。
2. 跳转至/test/proc_t文件下,编译并载入模块。
3. 跳转至/proc文件下,查看文件信息。我们发现在/proc文件下,存在一个名为hello的目录,hello目录下存在一个名为world的文件,文件内容为hello world。
4. 跳转至/test/proc_t文件下,卸载模块并清理。
5. 跳转至/proc文件下,查看文件信息,此时hello目录已被删除
代码:
1. proc.c
#include <linux/init.h>#include <linux/module.h>#include <linux/kernel.h>#include <linux/proc_fs.h>#define dir_name "hello"#define file_name "world"MODULE_LICENSE("GPL");MODULE_AUTHOR("Kook Bae");MODULE_DESCRIPTION("a proc_test module");static struct proc_dir_entry *dir;static struct proc_dir_entry *file;int file_read(char *buf,char **start,off_t off,int count,int *eof,void *data){int ret;ret=sprintf(buf,"hello world\n");return(ret);}static int __init proc_init(void){dir = proc_mkdir(dir_name,NULL);if(dir==NULL){remove_proc_entry(dir_name,NULL);printk(KERN_ALERT "Create direction hello :Failed!\n");return(-1);}printk(KERN_ALERT "Create direction hello :Success!\n");file = create_proc_entry(file_name,0644,dir);if(file==NULL){remove_proc_entry(file_name,dir);printk(KERN_ALERT "Create file world :Failed!\n");return(-1);}file->read_proc = file_read;file->uid=0;file->gid=0;file->size=36;printk(KERN_ALERT "Create file world :Success!\n");return(0);}static void __exit proc_exit(void){remove_proc_entry(file_name,dir);remove_proc_entry(dir_name,NULL);printk(KERN_ALERT "Delete direction hello and file world :Success!\n");}module_init(proc_init);module_exit(proc_exit);
2. Makefile
obj-m := proc.oKDIR := /lib/modules/2.6.18/build/PWD := $(shell pwd)all:make -C $(KDIR) M=$(PWD) modulesclean:make -C $(KDIR) M=$(PWD) cleanrm -rf *.ko *.mod.c *.o Module.* *.c~ Makefile~
0 0
- 在/proc文件系统中添加和删除文件
- 在/sysfs文件系统中添加和删除文件
- proc文件系统及在LKM中创建proc文件
- linux 在proc文件系统下创建文件
- 利用seq_file在proc下添加文件
- /proc文件系统文件含义
- 特殊文件--proc文件系统
- 特殊文件--proc文件系统
- 特殊文件--proc文件系统
- linux中proc文件系统
- proc文件系统和seq_file
- 在linux内核程序中支持proc文件系统
- 【文件管理】特殊文件系统/proc
- 检测何时在 BlackBerry 设备文件系统中添加或删除图像
- /proc文件系统中网络参数
- SylixOS中Proc文件系统简介
- 在Linux DeviceTree添加dtsi文件并在驱动中读取节点信息写入sys文件系统
- flex中关于文件的的添加和删除问题
- 51Nod 1417 天堂里的游戏
- axis2开发webservice教程
- 括号匹配 NYOJ 2
- Ceph--架构概述
- 高效显示Bitmap之UI线程外处理Bitmap
- 在/proc文件系统中添加和删除文件
- Marching Cube(C++ OpenGl代码)读取医学三维图像*.raw进行三维重建
- Oracle-Soft Parse/Hard Parse/Soft Soft Parse解读
- 解决Python下pip install MySQL-python失败的问题
- Levenberg–Marquardt算法学习
- timestamps 字段按天去group by的写法
- logstash使用grok正则解析日志和kibana遇到的问题
- 操作系统(Linux)--按优先数调度算法实现处理器调度
- 个人记录-LeetCode 34. Search for a Range