原文鏈接output=`dmesg|grephda`#becomesp1=Popen(["dmesg"],stdout=PIPE)p2=Popen(["grep","hda"],stdin=p1.stdout,stdout=PIPE)***p1.stdout.close()#Allowp1toreceiveaSIGPIPEifp2exits.***output=p2.communicate()[0]關(guān)于SIGPIPE信號(hào),我找到這樣的描述"如果你試圖向一個(gè)管道或套接口寫入,當(dāng)讀取方關(guān)閉連接,你將得到一個(gè)SIGPIPE的信號(hào),它會(huì)使進(jìn)程終止除非指定處理方法。"從大概的意思來看,關(guān)閉p1.stdout是為了讓p1收到SIGPIPE信號(hào)。但是內(nèi)在原因不能理解。我們建立了p1到p2的管道,為什么還要takecare他們之間的通信呢?
subprocess.Popen文檔 示例代碼意義求解惑
手掌心
2019-04-21 20:41:28