该场景调用fs.close是必要的

L.T*_*L.T 54 file-io node.js

我在nodejs API中找不到关于fs.close解释的更多信息.我想知道场景调用fs.close是必要的.例如:

var fs =  require('fs');
fs.writeFile("/home/a.tex","abc"); or like fs.appendFile("/home/a.tex","close")
fs.close(); //is it necessary?

如果我不打电话给fs.close有什么影响吗?

任何帮助表示赞赏.

Dan*_* D. 85

您不需要使用fs.closeafter fs.readFile,fs.writeFilefs.appendFile因为它们不返回fd(文件描述符).那些打开文件,对其进行操作,然后为您关闭它.

流结束后流返回fs.createReadStreamfs.createWriteStream关闭,但可能提前关闭.如果您已暂停流,则必须在流上调用close来关闭fd或恢复流,并在发出所有数据后结束.

但是,如果你打电话fs.open或任何其他人给fd你,你必须最终fs.close得到fd你.

  • @binki未能关闭文件描述符不会立即导致问题,但是一次可以打开多少文件描述符是有限制的.因此,如果您反复打开并且无法关闭文件描述符,最终会遇到"EMFILE:太多打开文件"错误. (5认同)
  • 你可以描述当你没有调用`close()`时出现的惩罚,为什么垃圾收集不会为你解决这个问题,以及什么类型的程序/代码/模式在忘记调用`fs时实际会遇到问题.close()`? (2认同)
  • @mpen文件描述符即使超出范围也将保持打开状态.它不会自动关闭. (2认同)
  • 如果调用fs.open的主要NodeJS进程终止了怎么办?那么操作系统是否认为文件句柄仍然保留? (2认同)