Я написал оболочку Perl XSUB для очень простого C API (для которого у меня нет исходного кода).
C API состоит из 4 функций. Одна из них возвращает «дескриптор» (просто int), и это значение должно быть передано обратно в любую из трех других функций, чтобы получить правильный внутренний «объект» для вызова. Предполагается, что C API хранит список этих объектов и выдает нужный для предоставленного дескриптора.
При запуске в автономном скрипте все работает отлично.
Теперь я пытаюсь запустить этот API под apache2 с помощью mod_perl. Сначала все работает нормально - я возвращаю «дескриптор» обратно клиенту, а затем клиент выполняет последующие вызовы с тем же значением дескриптора. Но после (очень короткого) периода бездействия C API решает, что он потерял свои списки «объектов», и начинает заново.
Я предполагаю, что это связано с тем, что основной файл .so выгружается.
Итак, мой вопрос:
Могу ли я что-нибудь сделать, чтобы предотвратить выгрузку этого .SO из apache / perl? Единственное, что кажется работающим, - это запуск apache в режиме отладки с параметром -X.
Спасибо