【发布时间】:2018-01-17 22:22:28
【问题描述】:
const spawnSync = require('child_process').spawnSync;
let x = spawnSync('bash', ['-c', 'echo "1stdout" ; echo "2stderr" >&2 ; echo "3stdout"']);
(bash 命令只是一个示例。命令可以是ls 或wget 或git - 没关系。)
当然,我可以用x.stdout和stderr用x.stderr访问子进程的stdout,所以我会得到
1stdout
3stdout
和
2stderr
分别。但是,我想要的是一个包含
的变量1stdout
2stderr
3stdout
我感觉options.stdio 中有一些东西可以提供帮助,但我无法弄清楚。
【问题讨论】:
-
您可以将 stdout 和 stderr 都通过管道传输到一个流中,然后再通过管道传输到变量中,但我怀疑获得一个无错误的实现将非常棘手,因为像 heroku 这样的大公司经常以当有很多输出时,我们的订单日志会稍微增加
标签: node.js pipe stdout child-process