Linux数据管理——文件锁定
#include <unistd.h>
#include <stdlib.h>
#include <stdio.h>
#include <fcntl.h>
#include <errno.h>int main()
{const char *lock_file = "/tmp/LCK.test1";int n_fd = -1;int n_tries = 10;while(n_tries--){//创建锁文件n_fd = open(lock_file, O_RDWR|O_CREAT|O_EXCL, 0444);if(n_fd == -1){//创建失败printf("%d - Lock already present\n", getpid());sleep(2);}else{//创建成功printf("%d - I have exclusive access\n", getpid());sleep(1);close(n_fd);//删除锁文件,释放锁unlink(lock_file);sleep(2);}}return 0;
}
#include <unistd.h>
#include <stdlib.h>
#include <stdio.h>
#include <fcntl.h>int main()
{const char *test_file = "test_lock.txt";int file_desc = -1;int byte_count = 0;char *byte_to_write = "A";struct flock region_1;struct flock region_2;int res = 0;//打开一个文件描述符 file_desc = open(test_file, O_RDWR|O_CREAT, 0666);if(!file_desc){fprintf(stderr, "Unable to open %s for read/write\n", test_file);exit(EXIT_FAILURE);}//给文件添加100个‘A’字符的数据for(byte_count = 0; byte_count < 100; ++byte_count){write(file_desc, byte_to_write, 1);}//在文件的第10~29字节设置读锁(共享锁)region_1.l_type = F_RDLCK;region_1.l_whence = SEEK_SET;region_1.l_start = 10;region_1.l_len = 20;//在文件的40~49字节设置写锁(独占锁)region_2.l_type = F_WRLCK;region_2.l_whence = SEEK_SET;region_2.l_start = 40;region_2.l_len = 10;printf("Process %d locking file\n", getpid());//锁定文件res = fcntl(file_desc, F_SETLK, ®ion_1);if(res == -1){fprintf(stderr, "Failed to lock region 1\n");}res = fcntl(file_desc, F_SETLK, ®ion_2);if(res == -1){fprintf(stderr, "Failed to lock region 2\n");}//让程序休眠一分钟,用于测试sleep(60);printf("Process %d closing file\n", getpid());close(file_desc);exit(EXIT_SUCCESS);
}
#include <unistd.h>
#include <stdlib.h>
#include <stdio.h>
#include <fcntl.h>int main()
{const char *test_file = "test_lock.txt";int file_desc = -1;int byte_count = 0;char *byte_to_write = "A";struct flock region_1;struct flock region_2;int res = 0;//打开数据文件file_desc = open(test_file, O_RDWR|O_CREAT, 0666);if(!file_desc){fprintf(stderr, "Unable to open %s for read/write\n", test_file);exit(EXIT_FAILURE);}//设置区域1的锁类型struct flock region_test1;region_test1.l_type = F_RDLCK;region_test1.l_whence = SEEK_SET;region_test1.l_start = 10;region_test1.l_len = 20;region_test1.l_pid = -1;//设置区域2的锁类型struct flock region_test2;region_test2.l_type = F_RDLCK;region_test2.l_whence = SEEK_SET;region_test2.l_start = 40;region_test2.l_len = 10;region_test2.l_pid = -1;//对区域1的是否可以加一个读锁进行测试res = fcntl(file_desc, F_GETLK, ®ion_test1);if(res == -1){fprintf(stderr, "Failed to get RDLCK\n");}if(region_test1.l_pid == -1){//可以加一个读锁printf("test: Possess %d could lock\n", getpid());}else{//不允许加一个读锁printf("test:Prossess %d get lock failure\n", getpid());}//对区域2是否可以加一个读锁进行测试res = fcntl(file_desc, F_GETLK, ®ion_test2);if(res == -1){fprintf(stderr, "Failed to get RDLCK\n");}if(region_test2.l_pid == -1){//可以加一个读锁printf("test: Possess %d could lock\n", getpid());}else{//不允许加一个读锁printf("test:Prossess %d get lock failure\n", getpid());}exit(EXIT_SUCCESS);
}
转载于:https://www.cnblogs.com/james1207/p/3268832.html
Linux数据管理——文件锁定相关推荐
- linux文件共享加锁,Linux共享数据管理——文件锁定
一.什么是文件锁定 对于锁这个字,大家一定不会陌生,因为我们生活中就存在着大量的锁,它们各个方面发挥着它的作用,现在世界中的锁的功能都可归结为一句话,就是阻止某些人做某些事,例如,门锁就是阻止除了屋主 ...
- Linux命令-文件锁定命令chattr与lsattr
PS:有时候你发现用root权限都不能修改某个文件,大部分原因是曾经用chattr命令锁定该文件了.chattr命令的作用很大,其中一些功能是由 Linux 内核版本来支持的,不过现在生产绝大部分跑的 ...
- Linux指令--文件和目录属性
对于每一个Linux学习者来说,了解Linux文件系统的目录结构,是学好Linux的至关重要的一步.,深入了解linux文件目录结构的标准和每个目录的详细功能,对于我们用好linux系统只管重要,下面 ...
- linux 文件类型 管理,Linux的文件类型及用户管理
Linux的文件类型 -,f:普通文件 d:目录文件,路径映射 l:链接文件(符号链接)软连接 设备文件: c:字符设备,一次存取一个字符 b:块设备 p:管道文件 fi,fo s:套接字文件,soc ...
- 鸟哥的Linux私房菜(基础篇)- 第六章、Linux 的文件权限与目录配置
第六章.Linux的文件权限与目录配置 最近更新日期:2009/08/18 Linux最优秀的地方之一,就在于他的多人多任务环境.而为了让各个使用者具有较保密的文件数据,因此文件的权限管理就变的很重要 ...
- Linux 的文件权限与目录配置
第六章.Linux的文件权限与目录配置 最近更新日期:2009/08/18 3. Linux目录配置 3.1 Linux目录配置的依据--FHS:/,/usr, /var 3.2 目录树(direct ...
- linux各文件夹的作用
linux各文件夹的作用 linux下的文件结构,看看每个文件夹都是干吗用的 /bin 二进制可执行命令 /dev 设备特殊文件 /etc 系统管理和配置文件 /etc/rc.d 启动的配置文件和脚本 ...
- linux的账号锁定
linux的账号锁定 吐槽 先吐槽一下网上的一些粘贴复制党,搜索的大部分相关文章内容一成不变,解决办法给出的方案也是一样,自己难道就没有实践过吗,发表的文章起码的严谨性都没有,由于自身没有很好的解 ...
- 服务器锁定文件,BEA-141297 - 无法获取服务器文件锁定(BEA-141297 - Could not get the server file lock)...
BEA-141297 - 无法获取服务器文件锁定(BEA-141297 - Could not get the server file lock) 尝试启动Oracle Weblogic Server ...
- Linux学习:Linux 的文件权限与目录配置
引用:<鸟哥的Linux私房菜基础篇第三版> Linux最优秀的地方之一就在于他的多人多任务环境.而为了让各个使用者具有较保密的文件数据,因此文件的权限管理就变的很重要了. Linux一般 ...
最新文章
- .Lucky后缀勒索病毒数据解密
- Django 使用celery任务队列的配置
- CCS5.5环境下使用clock()函数测试程序段运行时间
- 【Linux】一步一步学Linux——sh命令(225)
- 解决pathForResource返回nil / 无法读取plist文件问题
- 阿里云与A站在一起后,悄悄干了件大事
- RabbitMQ入门学习系列(二),单生产者消费者
- leetcode 5 Longest Palindromic Substring Java JavaScript解法
- 顺序表常见操作实现之一
- Vivado 2015.4 安装教程(含license)
- SSM高校实验室安全培训系统设计与实现.docx
- 某妹游戏登录加密(webpack)
- PHP高效率写法(详解原因)
- MySQL系列之STRAIGHT JOIN用法简介
- MultiTech MT9234ZBA 调制解调器Modem的测试方法
- UEBA架构设计之路3:复杂事件处理引擎
- BufferedInputStream。。。。。。。BufferedReader和BufferedWriter
- VMware pro安装CentOS 7
- ubuntu20.04-cuda100-cudnn7.6.5-tensorflow-gpu2.0.0安装测试记录
- funcode小游戏暑假大作业,开源,新颖,游戏名:凿空,免费。
热门文章
- 前端-----小米商城模块练习
- mac nginx 指定php.ini,基于Mac自带nginx、php,配置php运行环境
- 空间数据引擎oracle_Oracle-Spatial空间数据库基础
- 坚果云 linux 脚本,深度操作系统Deepin安装坚果云
- 7月6号奥特曼服务器维护中,泰迦奥特曼:7月6号开播,泰迦是泰罗儿子,优幸可变为三个奥特曼...
- java类中静态变量自增_Java中静态变量(类变量)、实例变量、局部变量和成员变量...
- python牛顿迭代法求平方根_Python编程如何实现二分法及牛顿迭代法求平方根代码...
- mysql银行储蓄额度格式_mysql创建表用于银行储蓄系统
- Kaggle:Santander 价值预测挑战(baseline)
- 极客大学架构师训练营 JVM虚拟机原理 JVM垃圾回收原理 Java编程优化 秒杀 第九次作业