在很多console.log

时间:2017-07-21 08:16:40

标签: javascript node.js child-process console.log

我正在开发一个应用程序,其中中心节点进程启动各种子节点进程。在很多控制台输出之后,我遇到了子进程退出的问题(无论是否重定向到父进程)。

我可以将问题简化为简单的双文件设置:

  • 如果我运行“node child.js”,它运行没有任何问题。
  • 如果我运行“node server.js”,这个过程也会启动child.js,但是在16615“console.log”-outputs之后返回代码“null”。
    node.exe仍然运行一段时间,最多消耗1500MB RAM。 (运行“node child.js”最多需要650 MB。)

代码: https://gist.github.com/anonymous/e7797d277770eeb1d1db20a0363c9d0a

有谁能告诉我我做错了什么?

节点版本:Windows 10 x64上的节点版本:6.11.1和8.2.1。

parent.js

var child = require('child_process');

console.log('parent (PID ' + process.pid + ': starting child');
var proc = child.exec('node child.js');
console.log('parent: stated child');
proc.stdout.pipe(process.stdout);
proc.stderr.pipe(process.stderr);
proc.on('close', (code) => {
    console.log('parent: child process exited with code ' + code);
});

child.js

console.log('child: i have been started - PID ' + process.pid);
for (var i = 1; i < 3000000; i++){
    console.log('child: ' + i);
}
console.log('child: i have finished');

1 个答案:

答案 0 :(得分:1)

您可能超过了maxBuffer的默认限制。 作为子进程的第二个参数,添加{ maxBuffer: 10 * 1024 * 1024 * 1024}以增加maxBuffer:

  

child.exec(&#39; node child.js&#39;,{maxBuffer:10 * 1024 * 1024 * 1024})