GalleryPhoto
(const spawnSync = require('child_process').spawnSync;
let x = spawnSync('bash', ['-c', 'echo "1stdout" ; echo "2stderr" >&2 ; echo "3stdout"']);
命令只是一个示例。命令可以是bash
或ls
或wget
- 无关紧要。)
当然,我可以使用git
访问子流程的stdout
,使用x.stdout
访问stderr
,这样我就可以
x.stderr
和
1stdout
3stdout
分别。但是,我想要的是一个包含
的变量2stderr
我觉得options.stdio
中有些内容可以提供帮助,但我无法弄明白。
答案 0 :(得分:0)
如果您可以将交织的输出写入文件:
let fd = createWriteStream('path', options)
// wait on fd 'open' event however you want to.
let results = child_process.spawnSync('ls', args, {stdio: [null, fd, fd]})
fs.closeSync(fd)
如果你想把它作为一个字符串,那么最简单的方法就是只读取文件。我认为另一种方法是创建双工流并在{stdio: [null, streamObj, streamObj]}
中传递流对象。这将需要处理流事件并动态构建字符串,如果您使用spawnSync()
,则可能不需要。