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

4
我有一些使用实现虚拟文件系统的库的Python代码。为了使这些虚拟文件系统的驱动程序工作,需要重写/替换一堆C函数(例如readdir(),opendir(),fseek())- 用在.so/.cpp文件中定义的替换内容。通常可以通过将LD_PRELOAD设置为该.so文件来完成此操作。但是,我需要能够在运行时覆盖这些函数,并在使用那些被覆盖的函数的Python函数执行后最好恢复到非被覆盖函数。这可能吗?
1个回答

2

这看起来非常有前途,谢谢。一旦我弄清楚如何让Python中os模块中的函数使用我使用ctypes导入的库,我就会将其标记为答案! - false_azure
通常这些东西是用C或C++编写的,并链接到共享库中。 - jim mcnamara
有道理,但我需要与现有的Python代码库一起工作。我有一个包含所有应该使用Python os函数重新定义的.cpp/.so文件,它是一个具有Python包装器的C++库的一部分。 - false_azure

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接