在Windows 7中打开太多文件(EMFILE错误)

8

我正在使用Node.js (0.10.31)和Gulp (3.8.8)来自动化一些在Windows 7上的任务,但我遇到了以下错误:

events.js:72
    throw er; // Unhandled 'error' event
          ^
Error: EMFILE, open 'c:\myproject\package.json'

我已经将项目迁移到Ubuntu,并使用ulimit -n命令进行修复,但仍然好奇如何在Windows中解决此问题。

现在,首先我想知道是否存在任何限制,防止在Windows 7中打开更多的文件/套接字,从而导致EMFILE错误

其次,如果有,我该如何更改这个限制?

1个回答

3
VSC++运行时存在一个限制。尽管该值可以通过调用“_setmaxstdio”(我认为Node没有调用)增加到2048,但应用程序只能通过运行时打开512个文件描述符。 (这是一个相对简化的说明,了解更多详情请参见这里)。 您无法直接更改此限制(如果您能让Node以某种方式调用此函数,则只能将512提高到2048)。
但您写道您正在使用相当古老的Node v0.10.31。据我所知(虽然我不100%确定),Node在此期间已从使用VSC++运行时进行文件I/O转换为本机WinAPI调用,这些调用没有此限制,因此,如果您有此选项,可以尝试最新的Node版本。

这是一个有用的评论,但是“据我所知,这可能已经被修复了,请尝试使用更新版本的node”并不是一个答案。 - mikemaccana
2
既然它被接受了,我就假设它解决了问题。我对此进行了研究,但没有找到确切的版本更改时间,只知道他们进行了更改。问题是是否存在限制以及是否可以更改,我详细回答了这些问题。 - CherryDT

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接