我正在使用 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
以查看文件上的所有修改。如果您的处理程序从此处调用,请请求文件大小并执行您的操作。
我是一名优秀的程序员,十分优秀!