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

标签 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);

最佳答案

一般来说,打开一个文件会告诉操作系统你想操作这个文件。

一般来说,文件访问就是您对文件的操作方式:只读、只写、读写。一些访问权限还包括顺序或随机。

关于c++ - 访问文件和打开文件有什么区别,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20203712/

相关文章:

c++ - 为什么我们在重载赋值中使用 return *this ?

linux - 连接中的套接字编程错误

java - 无法在 linux 上使用 tomcat 实现 waffle 身份验证。 javax.security.auth.login.LoginException :

c - 如何获取Linux内核中文件的大小?

c++ - 为用户定义的 MyList 重载 operator<<

c++ - 将代码从 C++ 移植到 C。我如何处理这个基于 vector 和范围的循环

Android内核在没有生根的情况下运行fanotify?

php - PHP 上的 Wordpress

linux - 如何检测文件已被删除