Python: [Errno 32] Broken pipe异常分析
来源:互联网 发布:cms上传文件 编辑:程序博客网 时间:2024/06/05 15:24
问题描述
一个比较简单的应用场景,在子进程中处理一些基本的业务逻辑,无socket相关的通信。
def subprocess():......def mainprocess():pid = os.fork()if pid == 0:subprocess()近期该业务模块不能正常工作,并报告[Errno 32] Broken pipe异常。
运行环境:Python 2.6, Ubuntu 9.04
问题分析
[Errno 32] Broken pipe异常属于IOError,因此此问题和IO操作有关。检查相关的业务逻辑:
1. 之前的处理,相关的日志均通过log模块记录到文件中,无此异常
2. 检查相关的源码的修改记录,发现近期有开发人员没有使用log模块记录日志,而采用了print直接操作,初步推测可能和这部分代码有关
根据上述分析,通过Eclipse+Pydev的环境进行调试,居然可以正常运行;但shell下启动响应的脚本却依然有异常。print语句将输出信息定向到标准输出上,是否是输出满了导致的。进一步查看shell的启动代码,使用类似"nohup test.py"的形式启动,没有进行重定向输出重定向。
问题解决方案
综合上面的考虑,给出解决方案:
1. 直接使用print打印信息不是一个好的开发习惯,应该将信息记录到日志文件中;这样本身可以消除此问题
2. 启动脚本时,重定向标准输出:nohup test.py > /dev/null &2 > 1,将错误输出重定向到标准输出上,同时将标准输出重定向到/dev/null上。
0 0
- Python: [Errno 32] Broken pipe异常分析
- error: [Errno 32] Broken pipe
- Python提示[Errno 32] Broken pipe 导致线程crash错误
- Broken pipe异常分析及解决
- java.net.SocketException: Write failed: Broken pipe异常分析 .
- java.net.SocketException: Write failed: Broken pipe异常分析 .
- hadoop streaming的job中出现IOError: [Errno 32] Broken pipe
- java.net.SocketException: Broken pipe异常
- java.net.SocketException: Broken pipe异常
- ClientAbortException: java.net.SocketException: Broken pipe 异常
- hive使用python脚本导致java.io.IOException: Broken pipe异常退出
- Linux Error: 32: Broken pipe
- broken pipe
- broken pipe
- broken pipe
- broken pipe
- broken pipe
- oracle 监听异常崩溃,报错Linux Error: 32: Broken pipe
- Children's Day(4706)
- redis命令,学习笔记
- 大牛很通俗地介绍《信号与系统》
- J114 7/29
- Android笔记之Service
- Python: [Errno 32] Broken pipe异常分析
- Simhash相似哈希算法
- OpenCV改变图像大小的操作
- 大明A+B(1753)
- WPF设计的常用方法总结
- Hibernate之Session缓存以及操作Session缓存的相关方法
- hdu 5319(多校联合赛)
- android 清除程序中的多余资源
- PAT乙级 1016. 部分A+B