Python中文
首页
教程
问答
标签
搜索
登录
注册
python stdout刷新和
回答此问题可获得
20
贡献值,回答如果被采纳可获得
50
分。
<p>以下代码在管道插入T形三通时以断管结束,但在未管道插入时行为正确:</p> <pre><code>#!/usr/bin/python import sys def testfun(): while 1: try : s = sys.stdin.readline() except(<a href="https://www.cnpython.com/pypi/keyboard" class="inner-link">keyboard</a>Interrupt) : print('Ctrl-C pressed') sys.stdout.flush() return print s if __name__ == "__main__": testfun() sys.exit() </code></pre> <p>预期产量:</p> <pre><code>./bug.py Ctrl-C pressed </code></pre> <p>当管道进入T形管时,观察到的是管道破裂或根本没有输出(T形管stdout上没有,bug.log中也没有):</p> <pre><code>./bug.py | tee bug.log Traceback (most recent call last): File "./bug.py", line 14, in <module> sys.stdout.flush() IOError: [Errno 32] Broken pipe </code></pre> <p>为什么会这样?</p>
0 条评论
分类:
Python问答
请先
登录
后评论
默认排序
时间排序
1 个回答
匿名
1天前
擅长:python、mysql、java
<p>这不是一个python问题,而是一个shell问题,正如Brian所指出的,点击Ctrl-C将终止这两个进程。解决方法是使用命名管道:</p> <pre><code>mknod mypipe p cat mypipe | tee somefile.log & ./bug.py > mypipe </code></pre>
请先
登录
后评论
针对此问题:
更多的回答
关注
89
关注
收藏
1
收藏,
216
浏览
网友 提问于 2天前
相关Python问题
python语法错误(如果不在Z中,则在X中表示s)
4 回答
Python语法错误(无效)概率
1 回答
python语法错误*带有可选参数的args
3 回答
python语法错误2.5版有什么办法解决吗?
3 回答
Python语法错误2.7.4
6 回答
python语法错误30/09/2013
10 回答
Python语法错误E001
7 回答
Python语法错误not()op
2 回答
python语法错误outpu
8 回答
Python语法错误print len()
6 回答
python语法错误w3
4 回答
Python语法错误不是caugh
10 回答
python语法错误及yt-packag的使用
9 回答
python语法错误可以查出来!!瓦里亚布
1 回答
Python语法错误可能是缩进?
2 回答
Python语法错误和缩进
8 回答
Python语法错误在while循环中生成随机numb
3 回答
Python语法错误在哪里?
3 回答
python语法错误在尝试导入包时,但仅在远程运行时
7 回答
Python语法错误在电子邮件地址提取脚本中
6 回答