我使用chokidar来观看文件,我收到了EMFILE错误,我知道发生这种情况是因为我目前打开的文件描述符太多了。
我使用socket,所以graceful-fs无法解决问题。此外,暂时设置我的ulimit是暂时的。
有没有办法让代码中当前打开的文件描述符数量?我想检查数字是否即将超过限制,并在继续观察文件/目录之前让进程等待。
答案 0 :(得分:5)
获取当前打开fd计数的简单方法(假设您有/proc
fs)是检查/proc/self/fd
中的条目数:
var readdir = require('fs').readdir;
readdir('/proc/self/fd', function(err, list) {
if (err) throw err;
console.log(list.length);
});
请记住,打开目录进行阅读将导致另一个打开的fd。
如果要检查外部流程中打开的文件描述符的数量,只需将self
替换为您要检查的pid。