linux 进程同步锁,文件锁 进程间同步 (fcntl函数设置) linux系统编程

文件锁 进程间同步 (fcntl函数设置) linux系统编程

文件锁 进程间同步 (fcntl函数设置) linux系统编程

利用fcntl设置文件锁,先设置flock结构体相关属性,然后用函数设置:

fcntl(fd,F_SETLKW,&f_lock);

flock结构体如下:

f01dc4dee5e35882c7282a5b6dc94625.png

#include

#include

#include

#include

#include

int main(int argc,char *argv[])

{

int fd;

struct flock f_lock;

if(argc<2)

{

printf("input filename\n");

exit(1);

}

if((fd=open(argv[1],O_RDWR))<0)

{

perror("open error");

exit(1);

}

f_lock.l_type=F_WRLCK; //写锁

//f_lock.l_type = F_RDLCK //读锁

f_lock.l_whence=SEEK_SET;//从开始位置开始

f_lock.l_start=0; //偏移位置

f_lock.l_len=0; //偏移位置确定后,从此位置往后len长度区域锁住

fcntl(fd,F_SETLKW,&f_lock);//设置锁,阻塞等待模式

printf("get lock\n");

sleep(20);

f_lock.l_type=F_UNLCK; //属性设置为解锁

fcntl(fd,F_SETLKW,&f_lock);

printf("un flock\n");

close(fd);

return 0;

}

结果如下:一个终端开启后,另一个终端要等待解锁后才能访问文件

3fe1af2ce4c959cf5b89d4aeb947c509.png

8ea5be0bb9b3e37357d07ae5f1dc4c24.png

文件锁 进程间同步 (fcntl函数设置) linux系统编程相关教程

Day 6 : 补Java语言基础3(序列化、文件读写)

Day 6 : 补Java语言基础3(序列化、文件读写) 序列化 序列化是用来保存对象或者类的 当前状态 的一种操作,比如游戏中角色的血量需要在暂停游戏时保存下来。 序列化对象 //创建FileOutputStream和一个ser文件,用来以字节形式保存对象FileOutputStream fileStr

JVM-13-Class文件结构

JVM-13-Class文件结构 概述 为什么要了解Class文件 字节码文件使java语言具备了跨平台性 java虚拟机不和包括java在内的任何语言绑定,只与“Class文件”这种特定格式的二进制文件所关联,无论使用何种语言,只要能将源文件编译为正确的Class文件,那么这种语

Day 7 : 补Java语言基础1(网络 线程 并发(同步)) 多线程聊

Day 7 : 补Java语言基础1(网络 线程 并发(同步)) 多线程聊天小程序 客户端 、 服务器 客户端 连接到一个服务器上后就可以向 服务器 发送信息,服务器接受到信息之后会将信息馈送给连接在这个服务器上的 所有客户端 。 1.客户端 建立socket连接 客户端和服

SpringBoot-(8)单个文件、多个文件、base64的上传

SpringBoot-(8)单个文件、多个文件、base64的上传 文件上传 文件上传和下载是 JAVA WEB 中常见的一种操作,文件上传主要是将文件通过IO流传输到服务器的某一个特定的文件夹下 dependencies dependency groupIdorg.springframework.boot/groupId artifactIdspr

linux下如何创建txt文件

linux下创建txt文件的方法:可以使用touch命令来创建txt文件,如【touch qwe.txt】,表示创建一个名为qwe.txt的文件。 具体方法: (推荐教程:linux视频教程) 1、touch + qwe.txt(文件名 ) 创建文件akk.txt文件 2、vi akk.txt vi为进入vim编辑器命令,意

linux下如何删除文件夹

linux下删除文件夹的方法:可以使用【rm -rf 目录名】命令进行删除,如【rm -rf /var/log/httpd/access】,表示删除/var/log/httpd/access目录及其下的所有文件、文件夹。 直接rm就可以了,不过要加两个参数-rf 即: (推荐教程:linux视频教程) rm -rf 目

EggJS+Antd文件上传排坑汇总

EggJS+Antd文件上传排坑汇总 项目技术栈 前端: react + umi + antd 中间层: Eggjs 后端: Java 问题汇总 文件无法上传 eggJs 获取 form-data 请求的参数(带文件上传的请求) 使用 file 模式和 stream 模式的文件上传 1.文件无法上传 报错: missing csrf t

Java递归查询文件下所有的图片,移动到指定文件夹中,分批次建立

Java递归查询文件下所有的图片,移动到指定文件夹中,分批次建立子文件夹 1. 代码实例 将 /Users/shiheng/desktop/测试文件 目录下的图片(包含子文件夹目录下的图片)移动到了 /Users/shiheng/desktop/测试结果 目录下,默认不分批次建立子文件夹, 重名文件

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值