我是靠谱客的博主 勤奋小天鹅,最近开发中收集的这篇文章主要介绍linux 文件锁获取读锁,linux文件读写 文件锁、select、poll【转】,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

本文转载自:http://blog.csdn.net/fansongy/article/details/6853395

一、文件锁

文件锁用于多个用户共同使用或操作同一个文件。有读锁的时候可以再加读锁,不能再加写锁。有写锁的时候,不能加任何锁,加读锁时,该描述符必须是读打开,加写锁时,该描述符必须是写打开,且只在进程间有用。

重写的上锁方法

[cpp] view plain copy print?

//lock.c

int lock_set(int fd,int type){

struct flock lock;

lock.l_type=type;

lock.l_start=0;

lock.l_whence=SEEK_SET;

lock.l_len = 0;

lock.l_pid=-1;

fcntl(fd,F_GETLK,&lock);

if(lock.l_type!=F_UNLCK){

if(lock.l_type == F_RDLCK)

printf("Read lock already set by %d!n",lock.l_pid);

else if(lock.l_type == F_WRLCK)

printf("Write lock already set by %d!n",lock.l_pid);

}

lock.l_type = type;

//此处的F_SETLKW为F_SETLK的阻塞版本,当无法获取锁时进入睡眠等待状态

if(fcntl(fd,F_SETLKW,&lock)

#include

#include

#include"lock.c"

int main(){

int fd;

fd=open("readme",O_RDWR|O_CREAT,0666);

if(fd

#include

#include

#include"lock.c"

int main(){

int fd;

fd=open("readme",O_RDWR|O_CREAT,0666);

if(fd

#include

#include

#include

#define MAX(a,b) (a>b?a:b)

int main(){

int fd[3];

char buff[1024];

int res,max_fd,i,num;

fd_set insert,temp_insert;

struct timeval tv;

fd[0]=0;

if((fd[1]=open("in1",O_RDONLY|O_NONBLOCK))

#include

#include

#include

#include

#include

#include

#define MAX_BUFFER_SIZE 1024

#define IO_IN_FILES 3

#define TIME_DELAY 60000

int main() {

struct pollfd fds[IO_IN_FILES];

char buff[MAX_BUFFER_SIZE];

int i,res,real_read;

fds[0].fd=0;

if((fds[1].fd=open("in1",O_RDONLY|O_NONBLOCK))

Linux 文件读写操作与磁盘挂载

文件读写 [文件描述符] Linux下,通常通过open打开一个文件,它然后返回给我们一个整数,通过这个整数便可以操作文件,这个整数我们称文件描述符(fd).对应被打开的文件,它也是一种系统资源,那么 ...

Linux IO模式以及select poll epoll详解

一 背景 同步IO和异步IO,阻塞IO和非阻塞IO分别是什么,到底有什么区别?不同的人在不同的上下文下给出的答案是不同的.所以先限定一下本文的上下文. 本文讨论的背景是Linux环境下的network ...

(转)linux文件读写的流程

转自http://hi.baidu.com/_kouu/item/4e9db87580328244ef1e53d0 在这篇文章中,我们看到文件是如何被打开 ...

Linux文件读写机制及优化方式

导读 Linux是一个可控性强的,安全高效的操作系统.本文只讨论Linux下文件的读写机制,不涉及不同读取方式如read,fread,cin等的对比,这些读取方式本质上都是调用系统api read,只 ...

文档-linux io模式及select,poll,epoll

文档-Linux IO模式详解 1. 概念说明 在进行解释之前,首先要说明几个概念:- 用户空间和内核空间- 进程切换- 进程的阻塞- 文件描述符- 缓存 I/O 1.1 用户空间与内核空间 现在操作 ...

Linux文件读写笔记

读文件: #include #include #include //linux下面的头文件 #inc ...

【原创】Linux select/poll机制原理分析

前言 Read the fucking source code! --By 鲁迅 A picture is worth a thousand words. --By 高尔基 1. 概述 Linux系统 ...

(转载) Linux IO模式及 select、poll、epoll详解

注:本文是对众多博客的学习和总结,可能存在理解错误.请带着怀疑的眼光,同时如果有错误希望能指出. 同步IO和异步IO,阻塞IO和非阻塞IO分别是什么,到底有什么区别?不同的人在不同的上下文下给出的答案 ...

Linux高级编程--05.文件读写

缓冲I/O和非缓冲I/O 文件读写主要牵涉到了如下五个操作:打开.关闭.读.写.定位.在Linux系统中,提供了两套API, 一套是C标准API:fopen.fclose.fread.fwrite.f ...

随机推荐

分享25个CSS前端网页设计常用技巧

1.ul标签在Mozilla中默认是有padding值的,而在IE中只有margin有值.2.同一个的class选择符可以在一个文档中重复出现,而id选择符却只能出现一次;对一个标签同时使用class ...

使用HTML5的JS选择器操作页面中的元素

文件命名为:querySelector.html,可在Chrome浏览器中预览效果. 1 html> 2 

React Jest测试

一. var jest = require('jest'); jest.dontMock('../CheckboxWithLabel.js'); describe('CheckboxWithLabel ...

php中对象的串行化

我们大家有知道PHP串行化可以把变量包括对象,转化成连续bytes数据,你可以将串行化后的变量存在一个文件里或在网络上传输,然后再反串行化还原为原来的数据.文章这里就PHP串行化为大家详细的介绍.你在 ...

Bug记录:微博的Java SDK返回经纬度错误

现象:美国的坐标点可能会定位到西藏地区-后发现原来负经度经解析后,均变成正的! 源码: private void getGeoInfo(String geo) { StringBuffer value ...

js中的 arguments ,实参的集合

当 传递的参数个数不确定时,,可使用 arguments ..

cmake命令收集

cmake中一些预定义变量 PROJECT_SOURCE_DIR 工程的根目录 PROJECT_BINARY_DIR 运行cmake命令的目录,通常是${PROJECT_SOURCE_DIR}/bui ...

算法-java代码实现归并排序

归并排序 对于一个int数组,请编写一个归并排序算法,对数组元素排序. 给定一个int数组A及数组的大小n,请返回排序后的数组. 测试样例: [1,2,3,5,2,3],6 [1,2,2,3,3,5] ...

最后

以上就是勤奋小天鹅为你收集整理的linux 文件锁获取读锁,linux文件读写 文件锁、select、poll【转】的全部内容,希望文章能够帮你解决linux 文件锁获取读锁,linux文件读写 文件锁、select、poll【转】所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(44)

评论列表共有 0 条评论

立即
投稿
返回
顶部