gpt4 book ai didi

c++ - 删除具有打开句柄的文件

转载 作者:行者123 更新时间:2023-11-28 03:37:54 24 4
gpt4 key购买 nike

我不应该删除带有打开句柄的文件,对吗?所以我创建了一个文件,然后我立即尝试删除它,希望这会失败。还是我错了,在删除文件之前不必关闭句柄?

HANDLE hFile = CreateFile (TEXT(file),      
GENERIC_WRITE,
0,
NULL,
OPEN_ALWAYS,
FILE_ATTRIBUTE_NORMAL,
NULL);

if (hFile == INVALID_HANDLE_VALUE)
{
//FAIL
}

if(DeleteFile(file))
{
//Should it ever get here cos i dont close the handle?
}

最佳答案

这取决于文件的打开方式。如果共享模式指定了FILE_SHARE_DELETE,那么它可能会被其他人删除。

即使你内存映射文件,并且它已经用这个标志打开(和读/写共享),它仍然可以被 shell 删除(至少我试过这个并且它发生了,但也许该文件已简单地重命名并移至回收站)。在这种情况下,随后访问内存将导致“InPageError”C 样式异常。

关于c++ - 删除具有打开句柄的文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10314573/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com