【发布时间】:2019-11-22 14:38:20
【问题描述】:
很抱歉,如果这听起来像是一个问题,我可以用谷歌搜索,但我找不到答案,或者我无法理解解释。
我的假设是它会,否则如何将子进程的输出通过管道传输到父进程。
但这是我不明白的:
let { spawn } = require('child_process');
if (process.argv[2] === "child") {
console.log("In if!!");
}else{
const child = spawn(process.execPath, [__filename, "child"]);
child.stdout.on("data", (data) => {
console.log("In else!! ", data.toString());
});
}
为什么会输出
在其他!如果!!
我认为通过产生一个子进程,它会立即执行它,所以它转到 if 语句,在安慰出In if!! 后,它恢复到父进程,然后到达事件侦听器,从而安慰In else!!。我是不是误会了什么?
我的猜测是console.log,实际上并没有记录,而是返回In if字符串,然后将其传递给父进程,也就是回调中的data。但如果是这样的话,为什么它实际上不记录呢?
感谢您提前回复。
【问题讨论】:
标签: javascript node.js process