【发布时间】:2022-01-17 08:11:28
【问题描述】:
一段时间以来,我一直在尝试捕获 child_process 的输出。以下代码示例是我目前的尝试。
代码:
// Spawning a shell
var terminal = require('child_process').spawn(`sh`, [], { stdio: [ 'inherit', 'pipe', 'inherit'] });
console.log("Shell spawned!");
terminal.stdout.on('data', (data) => {
console.log(`Received chunk ${data}`);
});
输出:
贝壳生成了!
预期输出:
贝壳生成了!
$
在标准输出选项上使用“继承”而不是“管道”时,我得到了预期的输出。但由于我需要捕获进程/shell 的输出,所以“继承”对我没有用。我现在的问题是,如何捕获进程的标准输出流的整个输出以及“继承”到底在做什么?我试图在使用“继承”后捕获 process.stdout - 显然没有运气。
【问题讨论】:
-
您在子进程中启动新外壳是否有原因?您实际上是在子进程中分叉另一个进程。
-
你看到this answer了吗?它是否回答了您关于继承与管道的问题?
-
@kevintechie 我这样做的原因是检查如果我的 child_process 中的另一个进程产生了,我是否可以重定向输出。我已经尝试过“shell:true”这个论点,这基本上就是我在这里所做的。
标签: node.js stdout stdin child-process stdio