close()系统调用不会从/ proc / pid / fdinfo中删除描述符

时间:2015-11-19 07:13:57

标签: linux-kernel

我使用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;
}

0 个答案:

没有答案