相关疑难解决方法(0)

从Python子进程模块解释示例管道

17.1.4.2:替换 python子进程模块的shell管道表示要替换

output=`dmesg | grep hda`
Run Code Online (Sandbox Code Playgroud)

p1 = Popen(["dmesg"], stdout=PIPE)
p2 = Popen(["grep", "hda"], stdin=p1.stdout, stdout=PIPE)
p1.stdout.close()  # Allow p1 to receive a SIGPIPE if p2 exits.
output = p2.communicate()[0]
Run Code Online (Sandbox Code Playgroud)

对第三行的评论解释了为什么调用close函数,而不是为什么它有意义.对我来说,它没有.调用通信方法之前是否会关闭p1.stdout以防止通过管道发送任何输出?(显然它不会,我试图运行代码,它运行正常).为什么有必要调用close来使p1接收SIGPIPE?什么样的亲密关闭?究竟是什么关闭?

请考虑这是一个学术问题,除了更好地理解这些事情之外我不想做任何事情.

python subprocess

7
推荐指数
1
解决办法
3011
查看次数

标签 统计

python ×1

subprocess ×1