原文链接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他们之间的通信呢?
喵喔喔
智慧大石
相关分类