在/proc文件系统中添加和删除文件

本文介绍了如何在Linux-2.6.18内核中编写一个内核模块,该模块能动态在/proc文件系统下创建一个名为hello的目录,并在其中创建文件world,文件内容显示'hello world'。详细步骤包括创建目录、编写proc.c和Makefile,编译、加载及卸载模块,展示了如何操作Linux内核扩展文件系统。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

在Linux-2.6.18内核中编写一个内核模块,其功能是在/proc文件系统中增加一个目录hello,并在这个目录中增加一个文件world,文件的内容为hello world。

代码附录在博文的末尾

1. 在/目录中新建一个目录test,在test目录中新建一个目录proc_t,用于编写内核模块

cd /
mkdir test
cd test
mkdir proc_t
cd proc_t

2. 在proc_t目录中,新建文件proc.c和Makefile

注:Makefile的大小写不能错,如果写成makefile、MakeFile、makeFile等,则不行。

请参考以下教程进行新建(如何使用vim命令修改或新建文件):点击打开链接

http://blog.youkuaiyun.com/softimite_zifeng/article/details/53303856

2.1. 新建proc.c

要通过/proc文件系统节点来修改内核全局变量的值,需要在内核中创建一个proc文件,并在读取该文件时修改全局变量的值。 以下是一个示例代码: ```c #include <linux/module.h> #include <linux/proc_fs.h> #include <linux/seq_file.h> static int my_var = 0; static int my_var_proc_show(struct seq_file *m, void *v) { seq_printf(m, "%d\n", my_var); return 0; } static ssize_t my_var_proc_write(struct file *file, const char __user *buffer, size_t count, loff_t *f_pos) { int val; if (kstrtoint_from_user(buffer, count, 10, &val) != 0) return -EINVAL; my_var = val; return count; } static int my_var_proc_open(struct inode *inode, struct file *file) { return single_open(file, my_var_proc_show, NULL); } static const struct file_operations my_var_proc_fops = { .owner = THIS_MODULE, .open = my_var_proc_open, .read = seq_read, .write = my_var_proc_write, .llseek = seq_lseek, .release = single_release, }; static int __init my_module_init(void) { // 创建/proc/my_var文件 proc_create("my_var", 0666, NULL, &my_var_proc_fops); return 0; } static void __exit my_module_exit(void) { // 删除/proc/my_var文件 remove_proc_entry("my_var", NULL); } module_init(my_module_init); module_exit(my_module_exit); ``` 这个示例代码创建了一个名为my_var的proc文件,通过读取该文件可以获得当前my_var的值,通过写入该文件可以修改my_var的值。 要编译这个模块,需要在Makefile中添加以下内容: ```makefile obj-m := my_module.o ``` 然后执行make命令即可生成my_module.ko文件。在加载模块后,就可以通过/proc/my_var文件来修改全局变量my_var的值了。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值