• Linux 多进程读写文件 文件锁


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

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

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

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

    2.采用文件锁

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

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

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

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

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

  • 相关阅读:
    MySql数据库水平扩展过程
    (转)MySQL数据库水平切分的实现原理解析
    SVN安装使用
    servlet基础
    数据库读写分离的性能分析
    java的可变长参数
    java消息服务
    static/final成员与多态
    商业软件与开源软件
    托管堆
  • 原文地址:https://www.cnblogs.com/caosiyang/p/2413951.html
Copyright © 2020-2023  润新知