如何发布流程的所有资源?
-
08-10-2019 - |
题
我正在运行一个过程,该过程正在创建文件并使用该文件。该过程结束后,我正在删除该文件。
如果有一些例外,则如何知道该文件是由进程释放的,如果该文件被过程锁定,则如何删除该文件。
谢谢你的帮助 :)
解决方案
在Windows上,当过程结束时,OS返回该过程自动拥有的所有资源。故事结局。
例如,假设您在两个过程中的每个过程中都进行了“ CreateFileMapping()”以共享一个内存段。当第一个过程退出时,Windows会减少使用计数器,并且只有存活过程仍然可以使用对象。当第二个进程执行“ closehandle()”(或本身退出)时,计数器将减小为零,并且对象被完全释放。
换句话说,Windows不再使用时会回收资源,无论该过程是否在自己之后优雅地清理。
不,即使您打开一个用于独家访问的文件,一旦关闭文件句柄,该文件本身也不会“锁定”(并且在程序终止时,Windows将自动关闭它)。
其他提示
当您的程序结束时(无论是什么含义),如果文件仍然存在,则该过程将不再被该过程锁定...因为该过程不存在。
但是我不得不想知道;如果该文件最终仅被删除,您是否真的需要创建一个 文件 首先?
不隶属于 StackOverflow