我有一个相当大的 Python 项目,目前在 Linux 上运行,但我正在尝试扩展到 Windows。我已将代码简化为一个完整的示例,可以运行它来说明我的问题:我有两个类,Parent 和 Child。首先初始化父级,创建一个记录器,并生成一个子级来执行工作:
import logging
import logging.config
import multiprocessing
class Parent( object ):
def __init__(self, logconfig):
logging.config.dictConfig(logconfig)
self.logger = logging.getLogger(__name__)
def spawnChild(self):
self.logger.info('One')
c = Child(self.logger)
c.start()
class Child(multiprocessing.Process):
def __init__(self, logger):
multiprocessing.Process.__init__(self)
self.logger = logger
def run(self):
self.logger.info('Two')
if __name__ == '__main__':
p = Parent({
'version':1,
"handlers": {
"console": {
"class": "logging.StreamHandler",
"stream": "ext://sys.stdout"
},
},
"root": {
"level": "DEBUG",
"handlers": [
"console",
]
}
}
)
p.spawnChild()
Run Code Online (Sandbox Code Playgroud)
在 Linux(特别是 ubuntu 12.04)上,我得到以下(预期)输出:
user@ubuntu:~$ python …Run Code Online (Sandbox Code Playgroud) 我正在编写一个 C++ 程序,它需要告诉我由给定进程加载的所有模块。我已经开始研究EnumProcessModules,但它警告:“EnumProcessModules 函数不会检索使用 LOAD_LIBRARY_AS_DATAFILE 标志加载的模块的句柄。有关更多信息,请参阅 LoadLibraryEx。”
不幸的是,LoadLibraryEx没有提供有关如何识别以这种方式加载的任何进程的任何见解。它仅提供将其作为数据文件加载不会阻止任何其他进程更改库的功能。
有没有办法识别用 LoadLibraryEx 动态加载的库?