访问文件和打开文件有什么区别

时间:2013-11-25 21:28:47

标签: c++ linux fanotify

我有这样的疑问:¿它们之间的区别是:打开文件并访问文件?

我正在使用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);

2 个答案:

答案 0 :(得分:1)

通常,打开文件会告诉您要使用该文件操作的操作系统。

通常,文件访问是您使用文件的方式:只读,只写,读取和读取。写。某些访问权限还包括顺序或随机。

答案 1 :(得分:-1)

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