exec 的 stdout 和 stderr 触发条件有什么区别?

发布于 2022-09-12 04:04:47 字数 301 浏览 12 评论 0

为什么有的命令会从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 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

想挽留 2022-09-19 04:04:47

绝大多数情况下的 CLI 应用都还是把正常的输出都输出到 stdout 也即标准输出
而错误信息, 调试信息和小部分 CLI 应用的帮助信息会输出到 stderr 即标准错误输出

你想不清楚到底应该处理 stdout 还是 stderr 时可以考虑干脆把 stderr 重定向到 stdout, 就是这样:

/some_application 2>&1

有个细节要留意是一般来说 stdout 有行缓冲, stderr 则是逐字符的, 所以如果你采用重定向的方案, 而应用同时用到了这两个输出, 有可能 stderr 的文本会出现在 stdout 的前面

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文