挂钩内核sys_read()不影响文本编辑器

时间:2014-04-18 21:13:38

标签: linux module linux-kernel kernel

所以,我一直在做一些内核模块编程,我安装了一个工作模块,用一个名字来屏蔽文本文件,并用一个字替换任何一个字。我通过挂钩sys_open()跟踪模块中我想要的文件,然后在sys_read()的钩子中进行重写。

但是,仅当我cat文件(或者可能使用来自bash的awkprint)时才会看到效果,但是在文本编辑器中打开屏蔽文件只会显示未经过滤的文字。

我的问题是,为什么不挂钩sys_read()会影响文本编辑器的输出?我试过:vi,vim,gedit和nano。他们是以另一种方式获取文件内容吗?我知道它正在调用sys_read()因为我的printk调试消息出现在dmesg中,但是它可能会丢弃读取缓冲区并使用其他技术吗?

只是想知道发生了什么。

1 个答案:

答案 0 :(得分:0)

可能是您的文本编辑器在编辑文件时使用单独的临时文件,并且只在关闭/退出编辑器时将其保存在实名下。