Linux proc读操作为什么会执行3次
来源:互联网 发布:百度网站自然排名优化 编辑:程序博客网 时间:2024/05/21 09:09
在使用cat 命令读取proc 文件时,奇怪的发现读函数被执行了三次
proc 读函数代码片断(直接读取内核模块的某个变量值)
int proc_read_hello(char *page, char **start, off_t off, int count, int *eof,void *data) {
len = sprintf(page, “hello\n”); //把global_buffer的内容显示给访问者
printk("aaaa\n");
*eof = 1;
return len;
}
执行dmesg发现会有3次打印
[40861.961063] aaaa
[40861.961093] aaaa
[40861.961115] aaaa
而hello只有一次
注意这个proc read 函数的原型,其中有一个变量 *eof,如果不将其置1,它会多触发一次读操作,将*eof 置1后,就会少一次执行。
另外两次打印是因为cat的执行过程调用了两次read操作
查看cat 命令的系统调用,可以用strace 命令查看,发现调用了两次read 函数,第一次读取所有的数据,第二次读到的长度为0,因为有两次读,所以会触发两次,如果自己写一个文件读函数,仅仅调用一次read 函数,则只会触发proc 读一次
1 0
- Linux proc读操作为什么会执行3次
- page_load为什么会被执行2次
- 为什么onActivityResult会提前执行
- Linux/proc文件系统操作指南
- Timer为什么会一运行就执行?
- 为什么GNU/linux会普及?
- 为什么程序员要会linux
- 为什么fork()2次会避免产生僵尸进程
- 并行操作为什么无法执行
- linux proc目录和常用操作
- 定时任务会重复执行俩次的解决方法
- 定时任务会重复执行俩次的解决方法
- 定时任务会重复执行俩次的解决方法
- 定时任务会重复执行俩次的解决方法
- 定时任务会重复执行俩次的解决方法
- 定时任务会重复执行俩次的解决方法
- 定时任务会重复执行俩次的解决方法
- 定时任务会重复执行俩次的解决方法
- 协议传值
- HTML5 WebSocket的使用及例子
- ios bitcode问题
- Mac OS下 eclipse + tomcat 开发环境的搭建
- Android应用开发之(通过ClipboardManager, ClipData进行复制粘贴)
- Linux proc读操作为什么会执行3次
- 国家分级保护规范要求解读
- 给一个DIV的右上解加一个删除按钮
- Ubuntu扁平主题
- OC内存管理
- 工作日志内容
- excel文件导入数据库
- 得到音频文件的播放时间---GetAmrDuration
- centos 安装scipy