Я использую узел для рекурсивного прохождения файловой системы и создания системного вызова для каждого файла с помощью child.exec. Он хорошо работает при испытании на небольшой структуры, с парой папок и файлов, но при запуске на весь домашний каталог, он выходит из строя после того, как некоторое времяnodeJS слишком много дочерних процессов?
child_process.js:945
throw errnoException(process._errno, 'spawn');
^
Error: spawn Unknown system errno 23
at errnoException (child_process.js:998:11)
at ChildProcess.spawn (child_process.js:945:11)
at exports.spawn (child_process.js:733:9)
at Object.exports.execFile (child_process.js:617:15)
at exports.exec (child_process.js:588:18)
произойдет ли это потому, что он использует все ресурсы? Как я могу избежать этого?
EDIT: Код улучшения и лучшие предложения практика всегда приветствуются :)
function processDir(dir, callback) {
fs.readdir(dir, function (err, files) {
if (err) {...}
if (files) {
async.each(files, function (file, cb) {
var filePath = dir + "/" + file;
var stats = fs.statSync(filePath);
if (stats) {
if (stats.isFile()) {
processFile(dir, file, function (err) {
if (err) {...}
cb();
});
} else if (stats.isDirectory()) {
processDir(filePath, function (err) {
if (err) {...}
cb();
});
}
}
}, function (err) {
if (err) {...}
callback();
}
);
}
});
}
Пожалуйста, разместите минимальный тестовый пример, который воспроизводит ошибку. Важно понимать код, который вы используете. Также прочитайте модуль [graceful-fs] (https://github.com/isaacs/node-graceful-fs) для модуля изящного fs. ") (Почему он существует и т. Д.). –
Эта ошибка возникает из-за того, что у нее слишком много файлов, но не из-за слишком большого количества процессов. –
. ВСЕГДА получите ответы, если вы включите ваш фактический код, вызывающий проблему. Затем ответы могут быть предоставлены в конкретном контексте того, что вы делаете, и как структурирован ваш код, а не только дает теоретические ответы. – jfriend00