[Python] Python 輸出到 stdout 之後遇到 Broken pipe 錯誤?

[Python] Python 輸出到 stdout 之後遇到 Broken pipe 錯誤?

今天專案的程式遇到一個奇怪的問題,

一個 python 程式執行之後,要輸出一些訊息到 stdout,

但是卻遇到了 Broken pipe 的 IOError exception…

 

因為這個問題是從 log 裡看到的,沒辦法知道原本的 command line 是如何呼叫的,

但直接執行程式是沒有問題的…

查了一下,在下面這篇得到了一些提示:

stackoverflow: IOError: [Errno 32] Broken pipe: Python

 

Broken pipe 表示程式在寫東西到 stdout,應該是有另外一個程式經由 pipe 將 stdout 接走了,

但是在資料被讀完之前,pipe 就被中斷了~

下面的一行指令就可以做出這個 Broken pipe 錯誤:

python -c 'print "A\n"*10000' | false

 

執行後就跳出了 exception:

Traceback (most recent call last):
File "<string>", line 1, in <module>
IOError: [Errno 32] Broken pipe

 

當然理論上不會有人把我們的 python 程式的執行結果 pipe 給 false,

但這表示的確有可能有人執行了我們的 python 程式,pipe 給某個程式,

而這個程式在未讀完資料前就將 pipe 中斷了 (可能是結束程式)…

不過這都只是猜測,沒辦法證實囉~

(本頁面已被瀏覽過 1,020 次)

發佈留言

發佈留言必須填寫的電子郵件地址不會公開。 必填欄位標示為 *

這個網站採用 Akismet 服務減少垃圾留言。進一步了解 Akismet 如何處理網站訪客的留言資料