我试图将子进程stderr重定向到它的stdout:
let buffer = execSync("echo hello 1>&2", {stdio : ["pipe","pipe", 1]});
console.log("Result: " + buffer.toString());
我的目标是在变量“缓冲区”中检索"hello“。在文档中,我看到可以重定向stderr:https://nodejs.org/api/child_process.html#child_process_options_stdio
因此,我一开始尝试将stderr输送到stdout (请参阅上面的代码),但我发现它重定向到父进程标准输出。
其结果如下:
node .\main.js
hello
Result:
我试图添加一个自定义缓冲区:
const {subprocess, execSync} = require("node:child_process");
let buff = Buffer.alloc(128);
execSync("echo hello 1>&2", {stdio : ["pipe",buff, buff]});
console.log("Result:" + buff.toString());
但是缓冲区仍然是空的:
node .\main.js
Result:
是否可以将子流程stderr重定向到execSync
返回的子进程标准输出?还是我必须使用custom stream或spawnSync
?
https://stackoverflow.com/questions/73361778
复制相似问题