我正在尝试使用unix命名管道来输出正在运行的服务的统计信息。我打算提供一个类似于/proc
的界面,其中可以通过捕获文件来查看实时统计信息。UNIX名为PIPE文件结尾
我用我的Python代码类似下面的代码:
while True:
f = open('/tmp/readstatshere', 'w')
f.write('some interesting stats\n')
f.close()
/tmp/readstatshere
是mknod
创建命名管道。
我然后猫就看到统计:
$ cat /tmp/readstatshere
some interesting stats
它正常工作的大部分时间。但是,如果我连续多次登录该条目,有时会得到多行some interesting stats
而不是一条。一次或两次,它甚至进入无限循环打印该行,直到我杀死它。到目前为止,我唯一的解决方法是在f.close()
之后延迟500毫秒以避免此问题。
我想知道为什么发生这种情况,如果有更好的方式处理它。
在此先感谢
有没有理由使用命名管道与普通文件? –
@Mansour合并完成。 –