Chinaunix首页 | 论坛 | 博客

abc

  • 博客访问: 21979
  • 博文数量: 17
  • 博客积分: 765
  • 博客等级: 军士长
  • 技术积分: 175
  • 用 户 组: 普通用户
  • 注册时间: 2009-10-11 22:34
文章分类

全部博文(17)

文章存档

2010年(3)

2009年(14)

我的朋友
最近访客

分类: WINDOWS

2009-12-16 21:47:25

#include
#include
#include

using namespace std;

void main()
{
string strName = "a.txt";
SetFileAttributes(strName.c_str(), FILE_ATTRIBUTE_NORMAL);
HANDLE h0 = CreateFile(strName.c_str(), GENERIC_READ, FILE_SHARE_READ|FILE_SHARE_WRITE|FILE_SHARE_DELETE, NULL, OPEN_ALWAYS, FILE_ATTRIBUTE_NORMAL|FILE_FLAG_OVERLAPPED, NULL);
int iRet = _unlink(strName.c_str());
HANDLE h1 = CreateFile(strName.c_str(), GENERIC_READ|GENERIC_WRITE, FILE_SHARE_READ, NULL, OPEN_ALWAYS, FILE_ATTRIBUTE_NORMAL|FILE_FLAG_OVERLAPPED, NULL);

}

1. _unlink删除会成功, 第二个CreateFile会失败, 因为这个文件在文件系统中已经标记为删除, 但是这个文件还被引用中, 所以并没有真正删除, 所以无法再打开了.

2. 如果把第一个句柄关闭, 则在文件系统中a.txt也马上被删除了. 第二次就可以打开.

阅读(238) | 评论(0) | 转发(0) |
0

上一篇:zlib的简单使用

下一篇:解析float

给主人留下些什么吧!~~