Child_Process:在超时之前获取命令的不完整输出

时间:2019-08-02 14:43:49

标签: node.js shell child-process

我有一个生成标准输出的命令,但是不会退出。我使用child_process.spawn生成,然后它将被杀死。我可以在终端中看到它产生输出,但是,我无法在nodejs中捕获它。

要尝试获取不完整的输出,我创建了可写流。但是,在检查带有断点的._write函数之后,我看到它没有被调用。

(inside a promise)
const stream = new Writable()
stream._write = (chunk, encoding, done) => {
    console.log(chunk.toString())
    done()
}
const cmdProcess = spawn("<command that doesn't exit>", { shell: true, stdio: 'pipe' })
cmdProcess.stdout.pipe(stream)
cmdProcess.stdout.on('error', () => {
    resolve('')
})
cmdProcess.stdout.on('end', () => {
    resolve('')
})
setTimeout(() => {
    cmdProcess.kill()
}, 5000)

使用 do 完成console.log(chunk.toString())上的断点的命令被触发。

这让我迷失了方向,因此任何帮助都将得到极大的帮助。

0 个答案:

没有答案