我使用fanotify来跟踪磁盘更改。 fanotify将文件描述符关联到我的进程,我需要在处理完事件后关闭它。 但是,即使close(fd)成功,似乎文件描述符仍保持打开状态。 我正在使用man fanotify example
close(..)
返回时没有错误,但是查看/proc/<pid>/fdinfo
会说明不同的故事。
有办法克服这个问题吗?
在不清除与流程相关联的描述符的情况下,read(..)
调用可能会遇到read: Too many open files
我收到的错误是:
EMFILE The per-process limit on the number of open files has been reached. See the description of RLIMIT_NOFILE in getrlimit(2).
我希望用这个示例代码对它进行测试,但是在这里工作正常:
#include <iostream>
#include <cstdio>
#include <string>
#include <unistd.h>
int main ()
{
close(2);
std::string line; std::getline(std::cin, line);
return 0;
}