#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
#include <sys/types.h>
#include <sys/stat.h>
#include <fcntl.h>
#include <string.h> #define ERR_EXIT( m ) \
do \
{ \
perror( m ); \
exit( EXIT_FAILURE ); \
}while( 0 ) int main( int argc, char* argv[] ) { if( argc != 2 ) {
fprintf( stderr, "usage:%s filename", argv[0] );
exit( EXIT_FAILURE );
} int fd;
fd = open( argv[1], O_RDWR | O_TRUNC | O_CREAT, 0666 );
if( -1 == fd ) {
ERR_EXIT( "文件打开失败" );
} struct flock lock;
memset( &lock, 0, sizeof( lock ) ); lock.l_type = F_WRLCK; //写锁
lock.l_whence = SEEK_SET;
lock.l_start = 0;
lock.l_len = 0; //加文件写锁, 另一个进程操作文件 直接报错
//int ret = fcntl( fd, F_SETLK, &lock );
//加文件写锁, 另一个进程操作文件 会等待这个进程释放锁
int ret = fcntl( fd, F_SETLKW, &lock );
if( -1 == ret ) {
ERR_EXIT( "加锁失败" );
}else {
printf( "加锁成功\n" );
printf( "输入任意字符解锁\n" );
getchar();
lock.l_type = F_UNLCK;
if ( fcntl( fd, F_SETLK, &lock ) == -1 ) {
printf( "释放锁失败\n" );
}else{
printf( "释放锁成功\n" );
}
} return 0;
}

  

最新文章

  1. .htaccess绑定网站主目录的方法
  2. Sublime Text 3 使用总结
  3. git commit 之后 push 之前,想删除 个别的commit 文件
  4. css控制内容显示,自动加&quot;...&quot;
  5. 转 JavaScript 操作select控件大全(新增、修改、删除、选中、清空、判断存在等)
  6. codeforces 598B Queries on a String
  7. loadrunner11的移动端性能测试之脚本录制
  8. Noj - 在线强化训练3
  9. Linux系统IO分析工具之iotop常用参数介绍
  10. Ajax 及里面的XStream《黑马程序员_超全面的JavaWeb视频教程vedio》
  11. C语言学习 例四
  12. bzoj4448 情报传递
  13. STM32 LSM6DSL 陀螺仪数据采集
  14. 【Java】返回长度为零的数组或者集合,而不是null
  15. js 面向对象式编程
  16. mysql5.7启动slave报错 ERROR 1872 (HY000): Slave failed to initialize relay log info structure from the repository
  17. PHP和JS中全局变量和局部变量
  18. appium---【Mac】Appium-Doctor提示WARN:“ opencv4nodejs cannot be found”解决方案
  19. 第十一章 PhpMyAdmin连接远程mysql服务器---连接openwrt 703N服务器
  20. php -- 魔术方法 之 删除属性:__unset()

热门文章

  1. Docker 私服Registry简介与使用Docker-Compose安装Registry
  2. linux用户身份与文件权限
  3. 12C新功能:在线移动分区 (Doc ID 1584032.1)
  4. Eclipse中如何添加相对路径的外部jar包
  5. CSS新特性之3D转换
  6. 关于Mysql修改帐号密码的多种方法
  7. ReactNative: 使用输入框TextInput组件
  8. 03-MySQL安装与配置
  9. Web安全测试学习笔记-DVWA-登录密码爆破(使用Burp Suite)
  10. FLV提取AAC音频单独播放并实现可视化的频谱