我正在嘗試使用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合併完成。 –