2015-08-11 8 views
8

Ich bin mit Node.js (0.10.31) und Gulp (3.8.8) auf einige Aufgaben in Windows 7 zu automatisieren, aber ich habe folgende Fehler konfrontiert:Öffnen zu viele Dateien (EMFILE Fehler) in Windows 7

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

Ich habe das Projekt auf Ubuntu verschoben und beheben Sie das mit ulimit -n Befehl, aber immer noch neugierig, wie das in Windows zu lösen.

Jetzt möchte ich zuerst wissen, ob es eine Beschränkung gibt, die das Öffnen von mehr Dateien/Sockets in Windows 7 verhindern, die EMFILE error verursachen oder nicht?

Zweitens, wenn ja, wie kann ich diese Einschränkung ändern?

Antwort

3

Es gibt eine Einschränkung innerhalb der VSC++ - Laufzeit. Eine Anwendung kann nur 512 Dateideskriptoren über die Laufzeit öffnen, obwohl der Wert auf 2048 erhöht werden kann, wenn die Anwendung _setmaxstdio aufruft (was meiner Meinung nach Knoten nicht tut). (Dies ist eine etwas vereinfachte Erklärung, für weitere Details siehe here.) Sie können diese Einschränkung nicht direkt ändern (Sie könnten nur die 512 auf 2048 erhöhen, wenn Sie den Knoten dazu bringen würden, diese Funktion für Sie aufzurufen).

Wie auch immer du geschrieben hast, du verwendest den Knoten v0.10.31, der ziemlich alt ist. Soweit ich weiß (obwohl ich mir darüber nicht 100% sicher bin), hat Node in der Zwischenzeit von der Verwendung der VSC++ - Laufzeit für Datei - I/O auf native WinAPI - Aufrufe umgestellt, die diese Einschränkung nicht haben, also könntest du die neueste Knotenversion, wenn das eine Option für Sie ist.

+0

Dies ist ein nützlicher Kommentar, aber 'AFAIK das könnte behoben sein, versuchen Sie eine neuere Version von Knoten' ist keine Antwort. – mikemaccana

+2

Da es angenommen wurde, nehme ich an, dass es das Problem gelöst hat. Ich recherchierte darüber und fand nicht die genaue Version, als sie es änderten, nur * das * sie taten. Die Frage war, ob es eine Beschränkung gibt und ob sie geändert werden kann, und darauf habe ich ausführlicher geantwortet. – CherryDT

Verwandte Themen