У меня есть код Python, в котором используется библиотека, реализующая виртуальные файловые системы. Чтобы драйверы для этих виртуальных файловых систем работали, необходимо переопределить/заменить ряд функций C (таких как readdir(), opendir(), fseek()) с заменами, определенными в файле .so/.cpp. Обычно это можно сделать, установив LD_PRELOAD для этого файла .so. Однако мне нужно иметь возможность переопределять эти функции во время выполнения и в идеале возвращаться к незамещенным функциям после выполнения функций Python, использующих эти переопределенные функции. Это возможно?
Как я могу переопределить функции C (например, с LD_PRELOAD) во время выполнения?
Ответы (1)
Я предполагаю, что вы хотите ctypes. Вот обсуждение: https://docs.python.org/2/library/ctypes.html
person
jim mcnamara
schedule
20.11.2014
Это выглядит очень многообещающе, спасибо. Я отмечу это как ответ, как только выясню, как заставить функции в модуле os в Python использовать библиотеку, которую я импортировал с помощью ctypes!
- person false_azure; 20.11.2014
Обычно такие вещи пишутся на C или C++. И связаны с общей библиотекой.
- person jim mcnamara; 20.11.2014
Это имеет смысл, но мне нужно работать с существующей кодовой базой Python. У меня есть файл .cpp/.so со всеми переопределениями, которые должны использовать функции ОС Python, который является частью библиотеки C++ с оболочками Python.
- person false_azure; 20.11.2014