我正在尝试使用Unix命名管道来输出运行服务的统计信息。我打算提供与/proc
类似的接口,通过查看文件可以查看实时统计信息。
在我的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
大部分时间运行良好。然而,如果我快速连续地cat该条目几次,有时会得到多行“一些有趣的统计数据”,而不是一行。偶尔会陷入无限循环,一直打印该行,直到我杀掉它。目前我唯一的解决方法是在
f.close()
之后延迟500毫秒,以防止出现这个问题。我想知道为什么会出现这种情况,是否有更好的处理方法。
提前感谢。