我试着读subprocess.stdout但节点文件明确规定“如果孩子与标准输入输出催生[1]设置为‘管’以外的任何其他,那么这将是空的。”这是不是我想要的,因为我需要继承。
也试过在我的孩子过程中使用process.send(),但也不能工作。
这里是我的代码BTW:
const {spawn} = require('child_process');
const child = spawn('node index.js', {
shell: process.env.ComSpec,
stdio: 'inherit'
});
当然可以,答案可以在Node.js的文件here被发现。
如果您在Windows上运行此,read this section,你会希望确保子处理的终端(在Windows上的cmd.exe)中运行。
您应该能够使用:
const child = spawn('node index.js', ['/c', 'my.bat']);
要么
exec('node index.js', (err, stdout, stderr) => {
if (err) {
console.error(err);
return;
}
console.log(stdout);
});
基本上叫“重生(...)”将返回一个子进程,这是一个EvenEmitter。它有两个输出流,“标准错误”,“标准输出”,你会听的“数据”事件。
如何监听正常输出和错误:
child.stdout.on('data', (data) => {
console.log(`stdout: ${data}`);
});
child.stderr.on('data', (data) => {
console.log(`stderr: ${data}`);
});
要知道,当子进程已经存在,监听“close”事件
child.on('close', (code) => {
// Perform cleanup.
});