文件加锁问题

两个独立的程序之间互斥访问资源,弄了一下文件加锁问题

我用一个文件作为锁文件,两个程序独占访问该文件,分别锁文件和释放锁,来保护程序里有互斥访问资源的代码:

void lock_file(string file_name,HANDLE &handleFile)
{
 // Open the existing file.
 HANDLE hFile;

 do {
  Sleep(100);
  hFile = CreateFile(file_name.c_str(),         // open ONE.TXT
  GENERIC_WRITE,                                        // open for reading
  0,                                                                       // do not share
  NULL,                                                               // no security
  OPEN_ALWAYS,                                            // existing file only
  FILE_ATTRIBUTE_NORMAL,                      // normal file
  NULL);                                                             // no attr. template
 } while(hFile==INVALID_HANDLE_VALUE);

 handleFile = hFile; 
 cout << "我独占了文件.........." << endl;
}

void unlock_file(HANDLE hFile)
{
 cout << "我释放了文件.........." << endl;
 CloseHandle(hFile);

文件操作总结:

独占访问文件可以使用CreateFile,设置里面的文件访问模式为非共享;也可以使用fstream的open(),设置第三个参数为filebuf::sh_none,但是这个好像vc6.0编译不通过,估计是跟编译器有关。

基本文件操作API:

CreateFile(),WriteFile(),ReadFile(),SetFilePointer(),LockFile(),UnlockFile();

具体使用参考MSDN吧︿_︿

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值