为什么有的命令会从stdout
输出,有的命令会从stderr
,他们有什么区别呢?
如何知道某个命令输出走的是stdout
还是stderr
呢?
const exec = require('child_process').exec;
const cp = exec(cmd);
cp.stdout.on('data', (data) => {};
cp.stderr.on('data', (data) => {};
为什么有的命令会从stdout
输出,有的命令会从stderr
,他们有什么区别呢?
如何知道某个命令输出走的是stdout
还是stderr
呢?
const exec = require('child_process').exec;
const cp = exec(cmd);
cp.stdout.on('data', (data) => {};
cp.stderr.on('data', (data) => {};
10 回答11.1k 阅读
7 回答5.2k 阅读
6 回答3k 阅读
5 回答4.8k 阅读✓ 已解决
4 回答3k 阅读✓ 已解决
2 回答2.6k 阅读✓ 已解决
4 回答4k 阅读
绝大多数情况下的 CLI 应用都还是把正常的输出都输出到
stdout
也即标准输出而错误信息, 调试信息和小部分 CLI 应用的帮助信息会输出到
stderr
即标准错误输出你想不清楚到底应该处理
stdout
还是stderr
时可以考虑干脆把stderr
重定向到stdout
, 就是这样:/some_application 2>&1
有个细节要留意是一般来说
stdout
有行缓冲,stderr
则是逐字符的, 所以如果你采用重定向的方案, 而应用同时用到了这两个输出, 有可能stderr
的文本会出现在stdout
的前面