【发布时间】:2014-06-27 09:30:36
【问题描述】:
我需要编写一个 Windows C 应用程序来创建一个文件,并且在应用程序终止时需要删除该文件(无论是正常终止还是强制终止)。 p>
另一个要求是用户还应该能够以只读模式打开此文件(可能使用记事本)。基本上这将在 Java 中读取(即 DocumentBuilder::parse)
我写了以下代码
HANDLE hFile = CreateFile("d:\\test.xml",
GENERIC_WRITE,
FILE_SHARE_READ,
NULL,
CREATE_ALWAYS,
FILE_FLAG_DELETE_ON_CLOSE,
NULL);
当我在 Notepad.exe 中打开文件(即 test.xml)时,我收到一条错误消息“该进程无法访问该文件,因为它正被另一个进程使用”。
但是,以下代码可以正常工作
HANDLE hFile = CreateFile("d:\\test.xml",
GENERIC_WRITE,
FILE_SHARE_READ,
NULL,
CREATE_ALWAYS,
FILE_ATTRIBUTE_NORMAL,
NULL);
但问题是,它不会删除文件(即当应用程序被杀死时)。
感谢任何帮助。
如果您可以建议一种适用于 Windows 和 Unix 的方法,那就太好了(例如,使用 boost 库)。
【问题讨论】:
-
您说您正在编写一个 C 应用程序,但您的问题被标记为 C++。澄清。
-
创建文件。关闭它。使用所需的标志再次打开它。至于在进程强制终止时删除文件,(任务管理器或kill -9),是做不到的。你不能在进程启动时删除文件吗?