我用 FILE_FLAG_DELETE_ON_CLOSE 打开了一个文件,但现在我改变主意了
当你用 FILE_FLAG_DELETE_ON_CLOSE 标志打开文件后,是无法直接反悔的。不过,你可以换一种方式来实现类似的效果。本文介绍了无法更改标志的原因以及可行的替代方案。
背景速读
- 《The Old New Thing》是微软工程师 Raymond Chen 的个人博客(现托管于微软开发者博客),以 Windows 底层 API 和系统行为的内幕解释著称,风格短小精悍,专门解答开发者在实际编码中遇到的"为什么不 work"类问题。
- `FILE_FLAG_DELETE_ON_CLOSE` 是 Windows 文件 API 中的一个标志位:打开文件时带上这个标志,系统会在所有句柄关闭后自动删除该文件。常用于创建临时文件。
- 这篇短文讨论的核心问题:一旦用该标志打开文件,中途能否取消"关闭时删除"的语义?答案是 API 本身不提供取消的方法,但可以通过别的手段(如重命名或重新打开)实现类似效果。
- 文章面向的是 Windows 平台 C/C++ 开发者,读者需要了解 CreateFile、句柄(handle)等基本 Win32 概念。