exec 的 stdout 和 stderr 触发条件有什么区别?
为什么有的命令会从stdout
输出,有的命令会从stderr
,他们有什么区别呢?
如何知道某个命令输出走的是stdout
还是stderr
呢?
const exec = require('child_process').exec;
const cp = exec(cmd);
cp.stdout.on('data', (data) => {};
cp.stderr.on('data', (data) => {};
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
绝大多数情况下的 CLI 应用都还是把正常的输出都输出到
stdout
也即标准输出而错误信息, 调试信息和小部分 CLI 应用的帮助信息会输出到
stderr
即标准错误输出你想不清楚到底应该处理
stdout
还是stderr
时可以考虑干脆把stderr
重定向到stdout
, 就是这样:/some_application 2>&1
有个细节要留意是一般来说
stdout
有行缓冲,stderr
则是逐字符的, 所以如果你采用重定向的方案, 而应用同时用到了这两个输出, 有可能stderr
的文本会出现在stdout
的前面