原文鏈接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]關于SIGPIPE信號,我找到這樣的描述"如果你試圖向一個管道或套接口寫入,當讀取方關閉連接,你將得到一個SIGPIPE的信號,它會使進程終止除非指定處理方法。"從大概的意思來看,關閉p1.stdout是為了讓p1收到SIGPIPE信號。但是內在原因不能理解。我們建立了p1到p2的管道,為什么還要takecare他們之間的通信呢?
subprocess.Popen文檔 示例代碼意義求解惑
手掌心
2019-04-21 20:41:28