所以,我一直在做一些内核模块编程,我安装了一个工作模块,用一个名字来屏蔽文本文件,并用一个字替换任何一个字。我通过挂钩sys_open()
跟踪模块中我想要的文件,然后在sys_read()
的钩子中进行重写。
但是,仅当我cat
文件(或者可能使用来自bash的awk
或print
)时才会看到效果,但是在文本编辑器中打开屏蔽文件只会显示未经过滤的文字。
我的问题是,为什么不挂钩sys_read()
会影响文本编辑器的输出?我试过:vi,vim,gedit和nano。他们是以另一种方式获取文件内容吗?我知道它正在调用sys_read()
因为我的printk
调试消息出现在dmesg
中,但是它可能会丢弃读取缓冲区并使用其他技术吗?
只是想知道发生了什么。
答案 0 :(得分:0)
可能是您的文本编辑器在编辑文件时使用单独的临时文件,并且只在关闭/退出编辑器时将其保存在实名下。