linux proc 文件读取,触发proc 读函数三次

在使用cat 命令读取proc 文件时,奇怪的发现读函数被执行了三次,这三次都是有原因的。


proc 读函数代码片断(直接读取内核模块的某个变量值)


static int proc_read_addr(char *page, char **start, off_t off,
                          int count, int *eof, void *data)
{
    return sprintf(page, "0x%X\n", g_info.addr);
}



注意这个proc read 函数的原型,其中有一个变量 *eof,如果不将其置1,它会多触发一次读操作,将*eof 置1后,就会少一次执行。


再查看cat 命令的系统调用,可以用strace 命令查看,发现调用了两次read 函数,第一次读取所有的数据,第二次读到的长度为0,因为有两次读,所以会触发两次,如果自己写一个文件读函数,仅仅调用一次read 函数,则只会触发proc 读一次




评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值