【发布时间】:2024-10-07 00:45:02
【问题描述】:
我正在尝试使用 unix 命名管道来输出正在运行的服务的统计信息。我打算提供一个与/proc 类似的界面,人们可以通过 catting 文件查看实时统计信息。
我在我的 python 代码中使用了与此类似的代码:
while True:
f = open('/tmp/readstatshere', 'w')
f.write('some interesting stats\n')
f.close()
/tmp/readstatshere 是由mknod 创建的命名管道。
然后我用 cat 来查看统计数据:
$ cat /tmp/readstatshere
some interesting stats
大部分时间都可以正常工作。但是,如果我快速连续多次搜索条目,有时我会得到多行 some interesting stats 而不是一行。一两次,它甚至进入了一个无限循环,永远打印该行,直到我杀死它。到目前为止,我唯一的解决方法是在 f.close() 之后延迟 500 毫秒,以防止出现此问题。
我想知道为什么会发生这种情况以及是否有更好的处理方法。
提前致谢
【问题讨论】:
-
是否有理由使用命名管道而不是常规文件?
-
@Mansour 合并完成。
标签: python linux loops pipe eof