zoukankan
html css js c++ java
(转)linux用文件锁实现保证一个程序只能启动一个进程
#include <stdio.h>
#include <unistd.h>
#include <fcntl.h>
#include <errno.h>
int main(int argc,char* argv[])
{
int fd;
int lock_result;
struct flock lock;
char * pFileName = "tmp.lck";
fd = open(pFileName,O_RDWR);
if(fd<0)
{
printf("Open file failed. ");
return 1;
}
lock_result = lockf(fd,F_TEST,0); //参数使用F_LOCK,则如果已经加锁,则阻塞到前一个进程释放锁为止,参数0表示对整个文件加锁
//返回0表示未加锁或者被当前进程加锁;返回-1表示被其他进程加锁
if(lock_result<0)
{
perror("Exec lockf function failed. ");
return 1;
}
lock_result = lockf(fd,F_LOCK,0); //参数使用F_LOCK,则如果已经加锁,则阻塞到前一个进程释放锁为止,参数0表示对整个文件加锁
if(lock_result<0)
{
perror("Exec lockf function failed. ");
return 1;
}
printf("Pid: %ld process locked the file. ",(long)getpid());
//do something
while(getchar()<0);
printf("Pid: %ld process release the file. ",(long)getpid());
return 0;
}
查看全文
相关阅读:
How to Compile Java DBus
BZOJ 2783 JLOI 2012 树 乘+二分法
Robotium原则的实施源代码分析
基本的负载均衡算法
人大、上财、复旦、上交四校2013年应届金融硕士就业去向
2014届上财金融硕士就业情况
三跨),总分420+
复旦金融专硕和上财金融专硕
一个三跨考生三战上海财经大学金融硕士的考研经验
董某某
原文地址:https://www.cnblogs.com/lihaiping/p/4554802.html
最新文章
2013年7月21日周末小结
2013年7月20日
2013年7月19日周某前一晚
代码审核及考虑代码合并接口
HDOJ 3516 Tree Construction
static使用方法小结
Swift 的类、结构体、枚举等的构造过程Initialization(下)
关于MAC的pkg和mpkg的分别
SimpleDateFormat使用具体解释
AJAX基础知识点学�
热门文章
HDU
excel VLOOKUP函数的用法
Mustache 使用心得总结
Hibernate的fetch
Hadoop学习笔记(两)设置单节点集群
css3仿山猫侧边栏
关于读style元素定义样式表兼容性
Mysql 当安装完成后不执行 mysql 和 performance_schema 数据库
Java学习之路:详细解释Java解析XML四种方法
Android学习路径(23)应用Fragment建立动态UI——Fragment之间的通信
Copyright © 2011-2022 走看看