如何避免EMFILE,打开错误?

时间:2014-12-15 06:41:13

标签: node.js

我收到错误:

EMFILE, open <filename>

我不认为这与打开过多文件的情况相同。

当我运行ulimit时,输出为:unlimited,所以我不认为这是问题所在。 我创建了许多子目录,当创建子目录时,我会在fs.exists

之前调用fs.writeFile来检查目录是否实际存在

有什么问题?

编辑:ulimit -n输出1024

2 个答案:

答案 0 :(得分:1)

你应该尝试graceful-fs:https://github.com/isaacs/node-graceful-fs

正如描述所说,它将open和readdir调用队列化,如果有太多文件描述符的EMFILE错误,一旦关闭就会重试它们。

这里有一个很好的解释:http://blog.izs.me/post/56827866110/wtf-is-emfile-and-why-does-it-happen-to-me

答案 1 :(得分:1)

你不应该使用writeFile甚至appendFile,它们都会向每个追加文件打开文件。

使用流更好。您可以管理自己的文件句柄并在需要时关闭它:)

var stream = fs.createWriteStream("append.txt", {flags:'a'});
stream.write("data");
stream.end;