我有一位作家創建並有時用某些狀態信息更新文件。讀者在盧阿(所以我只得到io.open
)和可能bash(cat
,grep
,無論)實施。我擔心如果狀態信息更新(這意味着一個完整的文件重寫)會發生什麼,而讀者有一個打開的文件句柄:會發生什麼? I have also read,如果寫入/讀取操作低於4KB,這是原子性的:這對我來說是非常好的,因爲狀態信息可以很好地適合這樣的維度。我可以做這個假設嗎?在linux上使用文件作爲IPC
0
A
回答
2
對於管道而言,讀取或寫入是在4Kbytes以下的原子,而不是磁盤文件(原子粒度可能是文件系統塊大小,通常爲512字節)。
在實踐中你能避免打擾對這些問題(假設你的身份文件如小於512字節),而我認爲,如果作家是開放和快速編寫文件(特別是如果你避開open(2) -ing一個文件,並保持打開的文件句柄很長一段時間 - 然後是write(2)-稍後 - 一個小的字符串 - 在裏面),你不需要打擾。
如果你是偏執狂,但不要假設讀者(如grep
)打開文件,快速閱讀它,你可以寫一個臨時文件和rename(2)在整體寫入時(和close(2) -ed)-ing它。
作爲Duck suggested,鎖定讀寫器中的文件也是一個解決方案。
1
我可能會誤解,在這種情況下,有人會糾正我,但我不認爲外部讀者將會注意文件是否被同時更新。他們打算打印(或者可能是eof或錯誤)任何地方。
在任何情況下,爲什麼不避免整個混亂,只是使用文件鎖定。讓作者flock
(或類似)和讀者檢查鎖。如果他們得到鎖,他們知道他們可以閱讀。
相關問題
- 1. 在Linux中使用文件作爲IPC?
- 2. 廣播IPC在Linux上
- 3. 使用linux上的信號的IPC
- 4. 在Linux(IPC)
- 5. 消息隊列IPC執行在Linux上
- 6. Linux IPC選擇?
- 7. 在Windows上使用linux目標文件
- 8. IPC傳遞給Linux用戶空間exe文件
- 9. Linux文件上傳,fwrites,不起作用
- 10. 錯誤作曲℃〜(窗口)exe文件在Linux上使用MinGW
- 11. 如何在Linux和C中使用文件作爲互斥體?
- 12. Linux IPC:無法刪除msqid_ds
- 13. Linux IPC實現猜測
- 14. linux ipc需要鎖嗎?
- 15. 簡單的Linux IPC問題
- 16. 在Linux上運行jar文件作爲守護進程Ubuntu
- 17. 如何在linux上創建ini文件作爲HDFS
- 18. 在LINUX上使用Camel 2.10掛載文件夾文件處理
- 19. pyparsing不工作在Windows文本文件,但在Linux文本文件上工作
- 20. 文件上傳工作在Windows上,但不是在Linux上
- 21. 在Linux上使用
- 22. 在Linux上用recipesively移動文件
- 23. Linux:使用參數作爲文件快捷方式
- 24. IPC通過寫入文件?
- 25. 無法在Linux上使用C++保存文本文件
- 26. 如何在Linux中使用txt文件的內容作爲郵件的主題?
- 27. 在其他文件中使用活動作爲上下文
- 28. 上傳文件在linux中不起作用
- 29. PHP文件上傳在Linux服務器中不起作用
- 30. 在linux中使用IPC(進程間通信)使用java web服務
還考慮到[這在移動文件時處理打開](http://stackoverflow.com/questions/2028874/what-happens-to-an-open-file-handler-on-linux-if-the -pointed-file-gets-moved-de),我相信mv解決方案是最好的。 –