[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,015 次)