導航:首頁 > 編程語言 > 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相關的資料

熱點內容
中信銀行還完貸款什麼時候給解壓 瀏覽:231
ug自學編程入門 瀏覽:612
英語口語900句pdf 瀏覽:565
javabyte拼接 瀏覽:481
加密應用在哪裡找vivo 瀏覽:290
python讀寫圖像 瀏覽:289
不是金山毒霸會員文件還能加密嗎 瀏覽:955
python網站開發教程 瀏覽:875
安卓超感畫質引擎是什麼意思 瀏覽:323
ug80編程穩定嗎 瀏覽:706
樂高ev3魔方機器人編程 瀏覽:891
文件夾120 瀏覽:753
怎麼判斷用幾個密鑰進行加密 瀏覽:433
學韓語哪個app最好 瀏覽:940
怎麼才能讓蘋果手機登安卓號 瀏覽:599
史上最強大腦演算法 瀏覽:327
java圖形識別演算法 瀏覽:971
安卓手機開機怎麼會出現圓圈 瀏覽:203
定常流體一定是不可壓縮流體嗎 瀏覽:508
java基本演算法 瀏覽:390