代码编织梦想

文件锁

  1. 并发对文件I/O操作的影响
    解决办法?
    2)文件锁
    用法:man 2 fcntl

    头文件:#include <unistd.h>
            #include <fcntl.h>
    

    函数定义:int fcntl(int fd, int cmd, … /* arg */ );
    参数: cmd 取值 F_GETLK, F_SETLK 和 F_SETLKW ,分别表示获取锁、设置锁(不等待,失败就失败)和同步设置锁(会进行阻塞,等待).

    文件锁的表示
          struct flock
    
    
    // struct flock 结构体说明
    
       struct flock {
        short l_type;  /*F_RDLCK, F_WRLCK, or F_UNLCK */
        off_t l_start;  /*offset in bytes, relative to l_whence */
        short l_whence;  /*SEEK_SET, SEEK_CUR, or SEEK_END */
        off_t l_len;   /*length, in bytes; 0 means lock to EOF */
        pid_t l_pid;   /*returned with F_GETLK */ 查看是上锁的是哪一个进程id
    };
    那么l_start表示从文件当前指针位置开始计算的偏移值,如果为SEEK_END,那么l_start为从文件尾向前移动的偏移值。    SEEK_CUR当前开始偏移
    l_type:  第一个成员是加锁的类型:只读锁,读写锁,或是解锁。
    l_start和l_whence: 用来指明加锁部分的开始位置。
    l_len: 是加锁的长度。0的话锁到结尾的部分
    l_pid: 是加锁进程的进程id。
    
    举例: 
    我们现在需要把一个文件的前三个字节加读锁,则该结构体的l_type=F_RDLCK, l_start=0,
    l_whence=SEEK_SET,  l_len=3,  l_pid不需要指定,然后调用fcntl函数时,
    cmd参数使F_SETLK.
    
版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/m0_46376834/article/details/130523573

protected(保护)访问权限,派生和继承的各种方式,什么时候使用继承和派生,子类对父类成员的访问权限-爱代码爱编程

访问权限 protected(保护)访问权限派生和继承的各种方式什么时候使用继承和派生子类对父类成员的访问权限 protected(保护)访问权限 为什么要使用protected访问权限? 子类的成员函数中,不能直接访问父类的private成员,已经这些成员已经被继承下来了,但是却不能访问。 只有通过父类的public函数来间接访问,不是很方

C++流 文件流 二进制文件流读写-爱代码爱编程

C++流 C++流文件流对文本文件流读写二进制文件流读写 C++流 C++的IO流 设备: 1)文件 2)控制台 3)特定的数据类型(stringstream) c++中,必须通过特定的已经定义好的类, 来处理IO(输入输出) 文件流 文件流: 对文件进行读写操作 头文件: 类库: ifstream 对文件输入(读文件) ofs

为什么要使用友元,友元类-爱代码爱编程

这里写目录标题 为什么要使用友元友元的两种使用形式友元类使用注意 为什么要使用友元 C++是面向对象的,目的之一:封装 封装: 优点之一,就是安全。 缺点:在某些特殊的场合,不是很方便。 华为与IBM 40亿的咨询故事 IBM需要对华为各级部门做深度咨询分析, 为了提高咨询效率,由任正非直接授权,直接获取各部门的所有权限。 使用前提:

Vector容器,vector对象的构造,vector的赋值-爱代码爱编程

Vector容器 Vector容器概念vector对象的构造vector的赋值vector末尾的添加移除操作vector的插入vector的删除 Vector容器概念 vector是将元素置于一个动态数组中加以管理的容器。 vector可以随机存取元素,支持索引值直接存取, 用[]操作符或at()方法对元素进行操作 vector尾部添