• 14762阅读
  • 10回复

【提问】QT如何锁一个文件,不让其它程序读或者写?? [复制链接]

上一主题 下一主题
离线hetal
 

只看楼主 倒序阅读 楼主  发表于: 2005-10-26
上午11时52分36秒
QT如何锁一个文件,不让其它程序读或者写??
偶知道QReadWriteLock好像不行
离线myer

只看该作者 1楼 发表于: 2005-10-26
http://user.qzone.qq.com/56430808
离线forgotten
只看该作者 2楼 发表于: 2005-10-28
在linux下面用flock
Life is forgotten
离线hetal

只看该作者 3楼 发表于: 2005-10-31
谢谢,不过
1在QT4中没有了QtLockedFile
2我的锁文件在要跨平台的
离线XChinux

只看该作者 4楼 发表于: 2005-10-31
bool QFile::setPermissions ( Permissions permissions )

bool QFile::setPermissions ( const QString & fileName, Permissions permissions ) [static]

这个不知道行不行?
二笔 openSUSE Vim N9 BB10 XChinux@163.com 网易博客 腾讯微博
承接C++/Qt、Qt UI界面、PHP及预算报销系统开发业务
离线hetal

只看该作者 5楼 发表于: 2005-10-31
肯定不行,他是设置文件权限的函数,不像Linux的flock和lock函数
1.QFile::setPermissions是一个静态函数
2.QFile::Permissions 在Windows的ReadUser, WriteUser and ExeUser返回不对
离线XChinux

只看该作者 6楼 发表于: 2005-10-31
lock()函数,是C库函数中的东西.
物在BCB6的Help中查到.
Win32也能用.

Header File
io.h
Category
Input/output Routines
Prototype
int lock(int handle, long offset, long length);
Description
Sets file-sharing locks.
lock provides an interface to the operating system file-sharing mechanism.
A lock can be placed on arbitrary, nonoverlapping regions of any file. A program attempting to read or write into a locked region will retry the operation three times. If all three retries fail, the call fails with an error.
Return Value
lock returns 0 on success. On error, lock returns -1 and sets the global variable errno to
EACCES      Locking violation
二笔 openSUSE Vim N9 BB10 XChinux@163.com 网易博客 腾讯微博
承接C++/Qt、Qt UI界面、PHP及预算报销系统开发业务
离线XChinux

只看该作者 7楼 发表于: 2005-10-31
下面是BCB6 Help中的lock()函数的Example

#include <io.h>
#include <fcntl.h>
#include <sys\stat.h>
#include <process.h>
#include <share.h>
#include <stdio.h>
int main(void)
{
  int handle, status;
  long length;
  handle = _sopen("c:\\autoexec.bat",
    O_RDONLY,SH_DENYNO,S_IREAD);
  if (handle < 0)
  {
    printf("_sopen failed\n");
    exit(1);
  }
  length = filelength(handle);
  status = lock(handle,0L,length/2);
  if (status == 0)
    printf("lock succeeded\n");
  else
    printf("lock failed\n");
  status = unlock(handle,0L,length/2);
  if (status == 0)
    printf("unlock succeeded\n");
  else
    printf("unlock failed\n");
  close(handle);
  return 0;
}
二笔 openSUSE Vim N9 BB10 XChinux@163.com 网易博客 腾讯微博
承接C++/Qt、Qt UI界面、PHP及预算报销系统开发业务
离线hetal

只看该作者 8楼 发表于: 2005-10-31
我的意思是想问QT下如何锁一个文件,其它的方法我也有了
QtLockedFile确认是可以的,不过下载时要账号和密码,我有Trolltech Qt Solutions v3.3.2 Final 正式版,但是里面没有包含QtLockedFile类
离线XChinux

只看该作者 9楼 发表于: 2005-10-31
Qt开源版没有提供那就用不上了.
用C/C++标准库里的东西会比Qt的东西更好.可移植性更强.
二笔 openSUSE Vim N9 BB10 XChinux@163.com 网易博客 腾讯微博
承接C++/Qt、Qt UI界面、PHP及预算报销系统开发业务
离线hetal

只看该作者 10楼 发表于: 2005-11-01
看起来我只有去找一个商业版本了
快速回复
限100 字节
 
上一个 下一个