找回密码
 立即注册
收起左侧

Qt文件锁 加锁失败

5
回复
11021
查看
[复制链接]
累计签到:63 天
连续签到:1 天
来源: 2014-5-4 18:23:07 显示全部楼层 |阅读模式
1Qter豆
本帖最后由 charles_gz 于 2014-5-4 18:25 编辑

if(QFile::exists(oldName))        
{         
QLockFile lockFile(oldName);           
qDebug()<<"lockFile.isLocked()=="<<lockFile.isLocked()<<"error =="<<lockFile.error();
            if(lockFile.tryLock())            
            {               
                    
qDebug()<<"lockFile tryLock success";               
                    
if(!QFile::rename(oldName,newName))
*              
{
                    
qDebug()<<"file rename failed";
*                  
return;
               
}
*              
lockFile.unlock();
           }
*         
else
*         
{
*              
qDebug()<<"lockFile tryLock failed";
*         
}
}

上面的代码是实现重命名功能,问题出在lockFile.tryLock总是失败,打印isLocked()返回的是false。是QLockFile不是这样使用的吗?还是其他什么原因造成的?
第一次使用QLockFile希望知道原因的各位给予指点,谢谢

最佳答案

查看完整内容

你说的是打印isLocked()返回的是false 因为这个时候你都没开始 锁文件 你在tryLock之后才开始加锁 打印的是lockFile tryLock success还是lockFile tryLock success呢
回复

使用道具 举报

累计签到:410 天
连续签到:1 天
2014-5-4 18:23:08 显示全部楼层
charles_gz 发表于 2014-5-5 11:54
打印了error 为0
QLockFile::NoError        0        The lock was acquired successfully.

你说的是打印isLocked()返回的是false
因为这个时候你都没开始 锁文件
你在tryLock之后才开始加锁
打印的是lockFile tryLock success还是lockFile tryLock success呢
回复

使用道具 举报

累计签到:410 天
连续签到:1 天
2014-5-4 21:39:46 显示全部楼层
tryLock如果失败,你调用下看看失败原因是什么
LockError        error() const

可能是其他进程占用到了
回复

使用道具 举报

累计签到:63 天
连续签到:1 天
2014-5-5 11:54:20 显示全部楼层
a408815041 发表于 2014-5-4 21:39
tryLock如果失败,你调用下看看失败原因是什么
LockError        error() const

打印了error 为0
QLockFile::NoError        0        The lock was acquired successfully.
回复

使用道具 举报

累计签到:63 天
连续签到:1 天
2014-5-5 15:17:59 显示全部楼层
a408815041 发表于 2014-5-5 12:52
你说的是打印isLocked()返回的是false
因为这个时候你都没开始 锁文件
你在tryLock之后才开始加锁

嗯,上午发现打印的位置确实不对,现在打印的错误信息为1,其他进程持有锁。但是还没发现是那的问题,呵呵。谢谢你了
回复

使用道具 举报

累计签到:63 天
连续签到:1 天
2014-5-5 16:54:11 显示全部楼层
a408815041 发表于 2014-5-5 12:52
你说的是打印isLocked()返回的是false
因为这个时候你都没开始 锁文件
你在tryLock之后才开始加锁

通过截图可以到在tryLock之前打印的还是正常的可以加锁的,但是调用tryLock却失败了。具体代码及信息见截图

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

公告
可以关注我们的微信公众号yafeilinux_friends获取最新动态,或者加入QQ会员群进行交流:190741849、186601429(已满) 我知道了