1

我有这个疑问:¿之间的区别是:打开文件和访问文件?

我正在使用 fanotify,我只对 FAN_ACCESS 事件感兴趣。我启动我的程序,当我尝试编辑某个文件时,程序会执行它必须做的事情。

说,我写了一些测试,一些测试用例使用这样的代码:

filesystem::ofstream acces_to_file;
acces_to_file.open('/tmp/test_file.txt');
acces_to_file <<  "Some text" << endl;
acces_to_file.close();

但令人惊讶的是,我的程序没有检测到这种访问。我从 nano 访问相同的文件(即使没有重新启动上述程序)并且一切都可以再次工作。

这就是为什么我认为访问和打开文件之间必须有一些区别。

该程序始终由 root 用户执行。

我将标志设置如下:

fanotify_mark(fd, FAN_MARK_ADD, FAN_ACCESS | FAN_EVENT_ON_CHILD, AT_FDCWD, MONITOR_ROOT_PATH);
4

2 回答 2

1

通常,打开文件会告诉操作系统您要对文件进行操作。

通常,文件访问是您对文件进行操作的方式:只读、只写、读写。一些访问权限还包括顺序或随机。

于 2013-11-25T21:49:13.037 回答
-1

你到底在问什么?如果您询问是否能够访问要写入的文本文件,您将文本文件存储在哪里?如果将文本文件存储在只读位置,则写入文本文件将失败。它可能仍会打开并关闭文件,但不会进行写入。例如,如果您的文本文件位于 PC 的程序文件中,则您只能读取存储在那里的项目。如果您想要对文件进行读/写访问,请将其存储在 C:\Users\Default\AppData

于 2013-11-25T21:48:07.197 回答