导航:首页 > 编程语言 > python368

python368

发布时间:2024-10-15 06:16:57

1. python出现broken pipe错误

今天写 Python2 程序遇到一个问题,为说明这个问题,写一个演示程序,它的代码如下:

import sys

for line in sys.stdin:
print line.strip('\n')

该演示程序的功能就是从标准输入读取内容输出到标准输出,当以如下方式使用时程序会报错:

ps -elf | python test_pipe.py | head -n 10

报错内容如下:

Traceback (most recent call last):
File "test_pipe.py", line 6, in <mole>
print line.strip('\n')
IOError: [Errno 32] Broken pipe

而将head命令换成tail命令则不会报错。

网上搜索了下,找到了解决方法。解决方法如下:

import sys
from signal import signal, SIGPIPE, SIG_DFL

# 让 python 忽略 SIGPIPE 信号,并且不抛出异常
signal(SIGPIPE,SIG_DFL)

for line in sys.stdin:
print line.strip('\n')

该问题产生的原因是:当head程序从管道的一端读取到足够的数据后就会关闭管道,而python程序正在管道的另一端写入,于是python程序就会接收到SIGPIPE信号使程序异常退出。而tail命令是等管道写入完成后再关闭管道,所以不会有这个问题。

与python368相关的资料

热点内容
钉邮登录服务器地址 浏览:644
起源编译器适配第二款应用 浏览:433
cad弄断线条命令 浏览:463
怎么恢复手机app的安装包 浏览:300
idea重启项目不编译 浏览:495
程序员那么可爱演员表陆漓妈妈 浏览:127
linuxgadget驱动 浏览:592
华三调用acl的命令 浏览:7
资金流pdf 浏览:929
金融结算法补充条款 浏览:289
什么叫服务器怎么连接 浏览:519
空调压缩机有制冷但室内不是很冷 浏览:837
如何查解压成功 浏览:648
代码编译服务器硬件配置2021 浏览:413
php如何选中相同的进行修改 浏览:623
工行app个人怎么给企业账户转账 浏览:150
汇编与程序员 浏览:666
压缩包解码器下载 浏览:130
爱旅行的预备程序员 浏览:111
安卓qq浏览器怎么转换到ios 浏览:294