stderr基础

stderr基础一 从一个 c 的例子讲起 voidmain fprintf stdout stdout fprintf stderr stderr printf printf 编译成可执行文件 test out 分别执行 请请观察运行结果 test out test out gt tmp txt test out2 amp g

一、从一个c的例子讲起:

void main(){ fprintf(stdout,"stdout!"); fprintf(stderr,"stderr!"); printf("printf!"); }

编译成可执行文件test.out,分别执行,请请观察运行结果

./test.out ./test.out > tmp.txt ./test.out 2> tmp.txt ./test.out &> /dev/null ./test.out >> tmp.txt 2>&1

二、基本概念

  • stdout 标准输出设备(printf(“..”)) 同 stdout。
  • stderr – 标准错误输出设备 两者默认向屏幕输出。

stderr错误非常重要,如果现网程序处理不当,可能会丢失重要信息

三、python实现

python输出stdout,stderr

import sys sys.stderr.write("this is a error message") sys.stdout.write("this is a normal message")

python 捕获shell的stderr

import subprocess # 执行shell命令,通过subprocess来获取stdout和stderr的值 def exec_shell(cmd): child = subprocess.Popen(cmd, shell=True, stdout=subprocess.PIPE, stderr=subprocess.PIPE) child.poll() # 检查子进程状态 print child.stdout.read() # 不会自带换行 print child.stderr.read()

四、进阶思考

  • stdout和stderr到screen的顺序
  • python执行shell命令建议都用subprocess,而不是os.system()

参考内容:

  • https://blog.csdn.net/Q/article/details/
  • 《uninx高级环境编程》

腾讯云+社区 文章链接:https://cloud.tencent.com/developer/article/

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/201727.html原文链接:https://javaforall.net

(0)
上一篇 2026年3月20日 上午8:45
下一篇 2026年3月20日 上午8:45


相关推荐

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号