首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C语言 >

用C调用CreateFile/CloseHandle文件后才能如何删除 (续问)

2012-04-07 
用C调用CreateFile/CloseHandle文件后才能怎么删除 (续问)//这代码编译通过,运行删除失败,是编译器问题嘛,

用C调用CreateFile/CloseHandle文件后才能怎么删除 (续问)
//这代码编译通过,运行删除失败,是编译器问题嘛,还是什么问题? 求解???????
#include <windows.h>
#include <stdio.h>
#include <string.h>
#include <stdlib.h>

//打开文件  
#define open_file(x)\
{\
  hFile_##x=::CreateFile(file_##x,GENERIC_READ,FILE_SHARE_READ, NULL,OPEN_EXISTING,FILE_ATTRIBUTE_NORMAL,NULL);\
  if(hFile_##x==INVALID_HANDLE_VALUE)\
  {\
  printf("无法dd打开文件 %s!",file_##a);\
  system("pause");\
  exit(1);\
  }\
  hMap_##x=::CreateFileMapping(hFile_##x,NULL,PAGE_READONLY,0,0,NULL);\
  lpBase_##x=::MapViewOfFile(hMap_##x,FILE_MAP_READ,0,0,0);\
}
//关闭文件  
#define close_file(x)\
{\
  ::UnmapViewOfFile(lpBase_##x);\
  CloseHandle(hFile_##x);\
}  


int main(void)
{

HANDLE hFile_b;
HANDLE hMap_b;
HANDLE lpBase_b;
char *file_b="b.txt";
char *file_a="b.txt";

open_file(b);//打开B文件
close_file(b);//关闭文件B  

if(remove("b.txt"))
 printf("删除失败\n");
 else printf("OK \n");  
}

[解决办法]
remove成功好像是返回0把
[解决办法]
CreateFileMapping(hFile_##x,NULL,PAGE_READWRITE,0,0,NULL);
[解决办法]
还要注意remove需要全路径
[解决办法]
应该是漏掉了CloseHandle(hMap_##x);
改成PAGE_READWRITE也行的

探讨

CreateFileMapping(hFile_##x,NULL,PAGE_READWRITE,0,0,NULL);

[解决办法]
探讨

还要注意remove需要全路径

热点排行