关闭

Linux 多进程读写文件 文件锁

859人阅读 评论(0) 收藏 举报
分类:

目前遇到一个问题:多个进程对同一个文件进行写操作,如何避免冲突。研究了一下,做个小结。

 

对于多进程写文件,主要有以下两种处理方式:

1.类似于Linux日志文件服务

启动一个logger进程,其他进程向logger发消息,即把数据发送给logger,由logger来写文件,这种方法最安全,但是实现上相对复杂

2.采用文件锁

对当前读写文件进行加锁处理,简单说下两种加锁方式:

flock():文件级别的锁,针对整个文件进行加锁

fcntl()函数:段级别的锁,能够针对文件的某个部分进行加锁

 

另外,对于读写相对不很频繁,每次写入数据量比较小的这种情况,不加锁也可以接受,但打开文件操作时,必须启用O_APPEND选项,以免造成多个进程相互覆盖写入的情况。

在O_APPEND模式下,文件写入操作是这样的一个原子操作:将位置指针移动至文件末尾,写入数据。

0
0

查看评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
    个人资料
    • 访问:252044次
    • 积分:3375
    • 等级:
    • 排名:第10595名
    • 原创:5篇
    • 转载:500篇
    • 译文:0篇
    • 评论:8条
    最新评论