如何在运行时覆盖C函数(如LD_PRELOAD)?

时间:2014-11-20 00:05:18

标签: python c++ c dynamic-linking ld-preload

我有一些使用实现虚拟文件系统的库的Python代码。对于那些虚拟文件系统的驱动程序来说,需要覆盖/替换一堆C函数(如readdir(),opendir(),fseek()) - 使用.so / .cpp文件中定义的替换。通常可以通过将LD_PRELOAD设置为该.so文件来完成。但是,我需要能够在运行时覆盖这些函数,并且一旦执行了使用这些被覆盖函数的Python函数,理想情况下将恢复为非重写函数。这可能吗?

1 个答案:

答案 0 :(得分:2)

我猜你想要ctypes。以下是讨论:https://docs.python.org/2/library/ctypes.html