文件鎖
- ?Linux 提供了?
fcntl
?系統調用,可以鎖定文件 - 但是文件鎖是和進程相關聯的,一個進程中的多個線程/協程對同一個文件進行的鎖操作會互相覆蓋掉,從而無效。
fcntl
?創建的鎖是建議性鎖,只有寫入的進程和讀取的進程都遵循建議才有效;對應的有強制性鎖,會在每次文件操作時進行判斷,但性能較差,因此 Linux/Unix 系統默認采用的是建議性鎖。
寫入日志文件
- 使用?
O_APPEND
?標志來打開文件,這樣在每次寫入時都會?lseek
?到文件末尾進行寫入,這是一個原子操作,因此不會產生同步問題。
參考鏈接
- Linux 中多個進程操作同一個文件時會發生什么