【发布时间】:2023-03-27 13:28:01
【问题描述】:
我正在 Linux 上使用 C 语言开发一个小项目,但遇到了问题。 我必须制作一个模拟 WatchDog 活动的程序。所以我写了几乎所有的代码,但我不知道如何做最重要的部分。 当我的应用程序在后台运行时,它必须检测何时访问某些文件。我在一些结构中存储了这些文件的索引节点、路径和名称。那么,拥有有关文件的这些信息,我如何检测进程(任何进程,而不是某个进程)何时尝试访问其中一个文件? 编辑:实际上,我必须检测以下事件:打开文件时以及有人尝试修改文件时。比如,如果用户向文件写入内容然后尝试保存更改,我必须允许或不允许他这样做。
【问题讨论】:
-
为什么不直接从文件中删除写权限?
-
从未这样做过,但我相信您应该进行系统调用以获取所有进程,然后获取每个进程的句柄列表,然后获取这些句柄的文件名。
-
你需要阻止写入还是需要被动检测?
-
您可以使用
inotify收到有关文件更改的通知。但我认为您不会收到有关正在打开或读取文件的通知。 -
其实看起来可以。有一个
IN_OPEN事件。inotify的文档见man7.org/linux/man-pages/man7/inotify.7.html