linux的文件控制
2016-05-10 14:57
309 查看
在linux编程中大部分人很少遇到文件的控制,只会正常的读写文件,但是如果多个进程同时读写一个文件时,
就会出现同步问题,如果通过进程间的通信来控制不同的进程对同一个文件读写是可以的,但是这样设计起来
就很复杂的,我们会想如何过有个控制量能控制文件的读写就可以啦,你想对了确实有这么一个量---文件锁
下面就介绍一下文件锁的用法
struct flock{
short l_type; // 锁的类型
off_t l_start; //文件开始的位置
short l_whence; //偏离地址
off_t l_len; //锁定的长度
pid_t pid; //锁定的进程号
};
首先对一个文件的操做只有3种情况,读锁,写锁,无锁。因此l_type 对应的值可以是 F_RDLCK,F_WRLCK,F_UNLCK;
l_start 为相对的偏移量
l_whence相对位移的起点可选值有 SEEK_SET,SEEK_END,SEEK_CUR
在读过进程同时读取一个文件的时候,不会出现任何不一样的可能性,因此一个文件可以被多个进程读锁,但是如果同时写的时候
就会出现问题,因此同一个文件只能被一个进程写锁。
就会出现同步问题,如果通过进程间的通信来控制不同的进程对同一个文件读写是可以的,但是这样设计起来
就很复杂的,我们会想如何过有个控制量能控制文件的读写就可以啦,你想对了确实有这么一个量---文件锁
下面就介绍一下文件锁的用法
struct flock{
short l_type; // 锁的类型
off_t l_start; //文件开始的位置
short l_whence; //偏离地址
off_t l_len; //锁定的长度
pid_t pid; //锁定的进程号
};
首先对一个文件的操做只有3种情况,读锁,写锁,无锁。因此l_type 对应的值可以是 F_RDLCK,F_WRLCK,F_UNLCK;
l_start 为相对的偏移量
l_whence相对位移的起点可选值有 SEEK_SET,SEEK_END,SEEK_CUR
在读过进程同时读取一个文件的时候,不会出现任何不一样的可能性,因此一个文件可以被多个进程读锁,但是如果同时写的时候
就会出现问题,因此同一个文件只能被一个进程写锁。
相关文章推荐
- [Linux] Linux系统(文件操作)
- 学习Linux决心书
- linux下FFmpeg编译生成ffplay
- linux下FFmpeg编译生成ffplay
- linux下FFmpeg编译生成ffplay
- Linux CentOS 中安装 MySql
- linux下FFmpeg编译生成ffplay
- linux下ffmpeg安装
- linux下ffmpeg安装
- linux下ffmpeg安装
- linux下ffmpeg安装
- Linux下python升级后requests模块的安装
- 在linux下配置java版本方便切换
- Linux系统查看硬件配置
- 安全增强 Linux (SELinux) 剖析
- linux下C语言获取网卡MAC地址
- Linux 学习资料
- Kali Linux 教程 之 Kali Linux 更新源
- linux中unzip命令的使用详解
- CentOS6.5支持NTFS分区