stderr基础

一、从一个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()

参考内容:

原创声明,本文系作者授权云+社区发表,未经许可,不得转载。

如有侵权,请联系 yunjia_community@tencent.com 删除。

编辑于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏逸鹏说道

★Kali信息收集~★7.FPing :ip段扫描

参数: ? 使用方法: fping [选项] [目标...] -a显示是活着的目标 -A 显示目标地址 -b n 大量 ping 数据要发送,以字节为单位 ...

3046
来自专栏二进制文集

Netty 之 Java 的 I/O 演进之路

系列文章:http://www.jianshu.com/p/594441fb9c9e

753
来自专栏AILearning

编写TensorFlow文档

我们欢迎来自社区的Tensorflow文档的贡献。本文档介绍了如何为该文档做出贡献。特别地,本文档解释了以下内容: 文件所在位置。 如何进行一致的编辑。 在提...

2187
来自专栏菜鸟计划

webpack学习(六)打包压缩js和css

打包压缩js与css 由于webpack本身集成了UglifyJS插件(webpack.optimize.UglifyJsPlugin)来完成对JS与CSS的压...

4226
来自专栏一直在跳坑然后爬坑

'Hello, world!' Flutter学习笔记

换成Android里的话说,这个里面只有一个layout和一个显示文本的view,在这里统统叫做widget

602
来自专栏CRPER折腾记

VS Code折腾记 - (3) 多图解VSCode基础功能

772
来自专栏全沾开发(huā)

项目结构——JavaScript版本的2048实现[0]

项目结构——JavaScript版本的2048实现[0] 最近在看一本书《HTML5 Canvas开发详解》 看到了一定程度,打算找...

3456
来自专栏IMWeb前端团队

巧用css实现等比缩放裁切

实用场景 我们想要将后台传过来的图片显示在一个80*80 的容器里,但是由于后台给的图片大小不一致,所以我们要对图片做一个等比缩放然后裁切中间部分显示的处理。举...

2256
来自专栏ytkah

调用finecms栏目多图怎么实现

  finecms栏目自定义字段添加图集怎么调用出来?已经上传两张图片了,点击可以预览图片,前端显示不了,如下图所示。调用栏目多图这个要涉及到二次开发,首先要先...

2506
来自专栏Ryan Miao

eclipse中断点调试debug

几乎没有用过debug模式,每次想要知道结果都是sysou一下。记得曾经问乱码问题,jfinal说打断点调试看在哪里出错。简单记下普通调试。 1.在需要查看的地...

3178

扫码关注云+社区