//功能: 对文件加锁(适用于文件已经打开的情况)
int FileLocker::LockFile(const int fd, const short nLockMode /* = F_WRLCK */)
{
struct flock aLock;
aLock.l_type = nLockMode;
aLock.l_whence = SEEK_SET;
aLock.l_start = 0;
aLock.l_len = 0;
// 使用 F_SETLKW 表示如果获取不到锁资源,就无限期等待
// 所以,如果函数返回-1,就说明有异常情况发生
// fcntl 在参数为 F_SETLKW 时,返回值是"Value other than -1."
// 所以,只能对其进行判断
if (fcntl(fd, F_SETLKW, &aLock) == -1)
{
return -1;
}
return 0;
}
文件加锁
最新推荐文章于 2021-07-07 11:27:33 发布