问答

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

作者:admin 2021-06-07 我要评论

为什么有的命令会从 stdout 输出,有的命令会从 stderr ,他们有什么区别呢? 如何知道某个命令输出走的是 stdout 还是 stderr 呢? const exec = require('child...

在说正事之前,我要推荐一个福利:你还在原价购买阿里云、腾讯云、华为云服务器吗?那太亏啦!来这里,新购、升级、续费都打折,能够为您省60%的钱呢!2核4G企业级云服务器低至69元/年,点击进去看看吧>>>)

为什么有的命令会从stdout输出,有的命令会从stderr,他们有什么区别呢?

如何知道某个命令输出走的是stdout还是stderr呢?

const exec = require('child_process').exec;

const cp = exec(cmd);
cp.stdout.on('data', (data) => {};
cp.stderr.on('data', (data) => {};
###

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

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

/some_application 2>&1

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

版权声明:本文转载自网络,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。本站转载出于传播更多优秀技术知识之目的,如有侵权请联系QQ/微信:153890879删除

相关文章
  • PHP-fpm怎么实现进程间同步与互斥的?

    PHP-fpm怎么实现进程间同步与互斥的?

  • ts类型问题

    ts类型问题

  • js不带引号的对象格式字符串怎么转为对

    js不带引号的对象格式字符串怎么转为对

  • Number.prototype.toFixed() 四舍五入

    Number.prototype.toFixed() 四舍五入

腾讯云代理商
海外云服务器