c++ - 如果文件/目录大小增加到配置级别以上,有没有办法在 linux 中回调

标签 c++ c linux system-calls

我正在使用 linux 系统调用在/c++ 中以编程方式寻找类似这样的东西,

char * filename="/tmp/testDirectory";
fd = open(filename, O_CREAT | O_RDWR);

setmaxfilesize(fd,"4mb");         //<== looking for some API to do this.
registerforCallback(mycallback);  //<== looking for some API to do this 

void mycallback(void * arg)
{
 /* Delete old files inside directory to have space for new files*/
}

最佳答案

是的,但据我所知不是直接与文件大小有关。

看看: https://lwn.net/Articles/604686/

这将为您提供一个如何与文件通知交互的良好起点。文件更改后,您的处理程序会收到通知。在处理程序中,您可以检查大小并完成您的工作。

摘录: dnotify 基本上与系统调用一起工作 fcntl(fd, F_NOTIFY, mask); dnotify 接缝已过时(我的 linux 发行版不再支持 dnotify)

inotify 带有自己的 API。参见 man inotify。 可以使用 int inotify_add_watch(int fd, const char *pathname, uint32_t mask); 来监视文件更改,其中 mask 可以是 IN_MODIFY 以查看文件上的所有修改。如果您的处理程序从此处调用,请请求文件大小并执行您的操作。

关于c++ - 如果文件/目录大小增加到配置级别以上,有没有办法在 linux 中回调,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30167307/

相关文章:

c++ - C++11 标准库可以在没有同步的情况下使用内部静态常量变量吗?

c - 如何将 GDBusInterface 转换为 GDBusProxy?

c - 错误 : Expected expression before char

c - gdb - 在 Ubuntu 14.04 上加载内核模块

c++ - 在不创建新节点的情况下使用 map 实现 trie

c++ - pantheios 会捕获段错误吗?

C++ - 如何获取结构的最后一个成员类型以及从现有对象访问它的方法?

c - 被动运动检测

linux - 我可以在已编译的二进制文件中更改 'rpath' 吗?

php - UTF-8贯穿始终