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;
}
查看全文
相关阅读:
POJ1125-Stockbroker Grapevine【Floyd】(模板题)
Codeforces 862B (二分图染色)
hdu3047 Zjnu Stadium【带权并查集】
HDU1532 网络流最大流【EK算法】(模板题)
hdu 2063 过山车【匈牙利算法】(经典)
HDU-2066-一个人的旅行 【Dijkstra】
HDU 3625 Examining the Rooms【第一类斯特灵数】
HDU4372-Count the Buildings【第一类Stirling数】+【组合数】
HDU 6114 Chess【逆元+组合数】(组合数模板题)
HDU1211 密文解锁 【扩展欧几里得】【逆元】
原文地址:https://www.cnblogs.com/lihaiping/p/4554802.html
最新文章
U68641 划水(swim.pas/c/cpp)
bzoj3143
洛谷P3389 【模板】高斯消元法
U68464 滑稽树上滑稽果(guo)
luogu4187
luogu1503
bzoj1861
bzoj1503
挖地雷题解
洛谷P3374 【模板】树状数组 1&&P3368 【模板】树状数组 2题解
热门文章
P5018 对称二叉树题解
树上倍增求LCA详解
hdu 3579 Hello Kiki【中国剩余定理】(模数不要求互素)(模板题)
poj 1703
POJ1962:Corporative Network【带权并查集】
POJ 1655 Balancing Act (求树的重心)【树形DP】(经典)
hdu 4738 Caocao's Bridges 求无向图的桥【Tarjan】
hdu1269 有向图强连通 【Tarjan】(模板)
poj2186-Popular Cows【Tarjan】+(染色+缩点)(经典)
poj 1797 最大最小路段【dijkstra】 (经典)
Copyright © 2011-2022 走看看