proc文件(OLD)

简介: 写一个模块测试proc文件的读写: 1 #include linux/module.h 2 #include linux/kernel.h 3 #include linux/proc_fs.

写一个模块测试proc文件的读写:

 1 #include linux/module.h  
 2 #include linux/kernel.h  
 3 #include linux/proc_fs.h  
 4 #include linux/sched.h  
 5 #include asm/uaccess.h  
 6  
 7 #define STRINGLEN 1024  
 8  
 9 char global_buffer[STRINGLEN];  
10  
11 struct proc_dir_entry *example_dir, *hello_file;  
12  
13 int proc_read_hello(char *page, char **start, off_t off, int count, int *eof,  
14                 void *data) {  
15         int len;  
16         len = sprintf(page, global_buffer); //把global_buffer的内容显示给访问者  
17         return len;  
18 }  
19  
20 int proc_write_hello(struct file *file, const char *buffer, unsigned long count,  
21                 void *data) {  
22         int len;  
23  
24         if (count = STRINGLEN)  
25                 len = STRINGLEN – 1;  
26         else  
27                 len = count;  
28  
29         copy_from_user(global_buffer, buffer, len);  
30         global_buffer[len] = \0′;  
31         return len;  
32 }  
33  
34 static int __init proc_test_init(void) {  
35         example_dir = proc_mkdir("proc_test", NULL);  
36         hello_file = create_proc_entry("hello", S_IRUGO, example_dir);  
37         strcpy(global_buffer, "hello");  
38         hello_file->read_proc = proc_read_hello;  
39         hello_file->write_proc = proc_write_hello;  
40         return 0;  
41 }  
42  
43 static void __exit proc_test_exit(void) {  
44         remove_proc_entry("hello", example_dir);  
45         remove_proc_entry(“proc_test”, NULL);  
46 }  
47  
48 module_init(proc_test_init);  
49 module_exit(proc_test_exit);  

 


写入proc文件

echo "Hello from kernel" /proc/proc_test/hello'

读取proc文件内容,将看到屏幕上显示了我们写入的字符串:Hello from kernel

cat /proc/proc_test/hello
目录
相关文章
|
6月前
|
存储 Linux 索引
/proc的相关知识
`/proc`是Linux的一个伪文件系统,存储内核运行状态和进程信息。它包含以PID命名的子目录,提供对系统硬件、进程详情的查看和内核状态的修改。`/proc/self`是特殊目录,让进程能直接访问其自身信息,无需知道PID。通过`/proc/self/cmdline`、`cwd`、`exe`、`environ`和`maps`等文件,可以获取进程的命令行、工作目录、可执行文件路径、环境变量和内存映射等信息。`maps`显示内存区域和权限,`mem`则提供进程内存映射,但部分区域不可读。
|
6月前
|
Java
Files.find 去除部分目录/dev/fd,/proc如何操作
在使用 `Files.find` 方法时,如果你想在搜索过程中排除特定目录,如 `/dev/fd` 和 `/proc`,可以在 `BiPredicate` 实现中添加相应的逻辑。以下是一个示例,演示如何在 `Files.find` 中排除这些目录: ```java import java.io.IOException; import java.nio.file.Files; import java.nio.file.Path; import java.nio.file.Paths; import java.nio.file.attribute.BasicFileAttributes; imp
|
7月前
|
存储 Linux Shell
Linux内核追踪(一):proc/sys/debugfs
Linux内核追踪(一):proc/sys/debugfs
252 0
|
监控 Perl
|
IDE 网络协议 Unix