我正在尝试将子进程 stderr 重定向到它的 stdout:
let buffer = execSync("echo hello 1>&2", {stdio : ["pipe","pipe", 1]});
console.log("Result: " + buffer.toString());
我的目标是在变量“buffer”中检索“hello”。 在文档中,我看到可以重定向stderr:https://nodejs.org/api/child_process.html#child_process_options_stdio
所以我一开始尝试将stderr通过管道传输到stdout(参见上面的代码),但我发现它重定向到父进程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
返回的子进程stdout?或者我必须使用自定义流或spawnSync
?