用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也行的