删除加载的pyd文件

时间:2017-09-27 14:22:00

标签: python windows python-2.7 ctypes

我正在为应用程序编写更新程序。我需要删除旧文件,因为它们正在运行。这工作正常,直到我点击我正在使用的DLL文件。由于各种原因,我必须将_ssl已编译的库与我的发行版捆绑在一起。

我首先释放了库,无论出于什么原因需要两次调用才能实际删除句柄(我假设某些地方有重新计算)。在此之后,我尝试删除该文件。这导致Python死于0xC0000005,这显然是一个非常宽泛的退出代码。

import ssl
import ctypes
import _ctypes

print "Unloading SSL Module"
ssl_filename = ssl._ssl.__file__
dll = ctypes.CDLL(ssl_filename)
if ssl_filename.endswith("pyd"):
    _ctypes.FreeLibrary(dll._handle)
    _ctypes.FreeLibrary(dll._handle)
else:
    _ctypes.dlclose(dll._handle)
    _ctypes.dlclose(dll._handle)
print "Deleting current version..."
os.remove(ssl_filename)
print "Success"

执行后,我得到以下内容:

Unloading SSL Module

__builtin__ C:\path\to\_ssl.pyd 0 Deleting current version...

Process finished with exit code -1073741819 (0xC0000005)

我期待的是代码删除文件并继续正常。

0 个答案:

没有答案