我正在开发一个应用程序,其中中心节点进程启动各种子节点进程。在很多控制台输出之后,我遇到了子进程退出的问题(无论是否重定向到父进程)。
我可以将问题简化为简单的双文件设置:
代码: 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');
答案 0 :(得分:1)
您可能超过了maxBuffer的默认限制。
作为子进程的第二个参数,添加{ maxBuffer: 10 * 1024 * 1024 * 1024}
以增加maxBuffer:
child.exec(&#39; node child.js&#39;,{maxBuffer:10 * 1024 * 1024 * 1024})