gpt4 book ai didi

c++ - Windows 上的临时文件和文件夹

转载 作者:太空宇宙 更新时间:2023-11-04 16:26:39 25 4
gpt4 key购买 nike

通过多次加载 DLL 来模拟多线程(专为此而设计)。由于 LoadLibrary() 不允许,DLL 通过 GetTempPath()GetTempFileName() 将自身复制到一个临时文件中。

这是一个小文件,在线程销毁时它会释放库并删除临时文件。现在的问题是线程数是可配置的(狂热者可以选择 50、100 或更多),这基本上暴露了运行不稳定、崩溃和不执行通常的“删除临时文件”例程的风险。

如果我把那些临时文件留在那里死了可以吗?操作系统通常会自行清理吗?或者我应该写一个自动清理程序吗?如果是,我如何才能保存另一个临时文件来保存这些文件的列表,而不是达到 UAC 限制或其他方式?

有什么想法吗?

最佳答案

您对 LoadLibrary/多线程的讨论让我感到困惑,但没关系。

Windows 上的临时文件通常不会被创建它们的进程以外的任何东西删除。如果用户运行“磁盘清理”实用程序或类似工具,他可能能够自动为他删除这些文件。我认为这种情况不会经常发生。

最佳方法。让您的应用程序在临时文件夹中创建一个子目录(可能还有每个流程实例的子文件夹)。当您的应用程序退出时,它会通过 DeleteFile 清除它自己的一组临时文件。在应用重新启动时,它可以有一些逻辑来清理由于先前进程崩溃而仍然存在的文件夹和文件。

您还可以考虑在 CreateFile 上使用 FILE_ATTRIBUTE_TEMPORARY 标志。

您还可以考虑为您的流程设置一个全局异常处理程序。处理程序会在崩溃退出之前删除它自己的临时目录。

关于c++ - Windows 上的临时文件和文件夹,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11173444/

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