本文转载自: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))

最新文章

  1. [自动运维]ant脚本打包,上传文件到指定服务器,并部署
  2. js与jquery的用法
  3. php isset() empty() 区别, 判断 变量存在与否神器
  4. 【Java】如何检测、替换4个字节的utf-8编码(此范围编码包含emoji表情)
  5. Linux之网络管理
  6. Python系列之 - python运算符
  7. 用node探究http缓存
  8. 从壹开始前后端分离 [ Vue2.0+.NetCore2.1] 二十六║Client渲染、Server渲染知多少{补充}
  9. for循环增强
  10. B/S架构
  11. hyperledger中文文档学习-1-词汇表
  12. SpringMVC使用Swagger
  13. QT应用在windows和Linux平台的发布指南
  14. 5个强大的Java分布式缓存框架
  15. mysql-5.6.41-winx64安装
  16. 【Linux】文件操作系统调用
  17. VisionPro相机操作类
  18. bata2
  19. 170804、使用Joda-Time优雅的处理日期时间
  20. 【BZOJ】1052: [HAOI2007]覆盖问题(贪心)

热门文章

  1. netcat命令的使用
  2. sql通配符+sql中查询条件包含下划线等通配符的写法
  3. [luoguP3092] [USACO13NOV]没有找零No Change(状压DP + 二分)
  4. 禁止ScrollView在子控件的布局改变时自动滚动的的方法
  5. 【frameset】frameset设置不能拖动
  6. iOS - 设置系统类似的方法弃用警告的方式
  7. HDU 6396 贪心+优先队列+读入挂
  8. 实时更新数据的jQuery图表插件DEMO演示
  9. Spring Boot应用的启动和停止(Spring Boot应用通过start命令启动)
  10. css实现文字渐变