文件锁
-  Linux 提供了 fcntl系统调用,可以锁定文件
- 但是文件锁是和进程相关联的,一个进程中的多个线程/协程对同一个文件进行的锁操作会互相覆盖掉,从而无效。
- fcntl创建的锁是建议性锁,只有写入的进程和读取的进程都遵循建议才有效;对应的有强制性锁,会在每次文件操作时进行判断,但性能较差,因此 Linux/Unix 系统默认采用的是建议性锁。
写入日志文件
- 使用 O_APPEND标志来打开文件,这样在每次写入时都会lseek到文件末尾进行写入,这是一个原子操作,因此不会产生同步问题。
参考链接
- Linux 中多个进程操作同一个文件时会发生什么