【发布时间】:2011-12-26 14:41:09
【问题描述】:
我为一个非常简单的 C API(我没有源代码)编写了一个 perl XSUB 包装器。
C API 由 4 个函数组成。其中一个返回一个“句柄”(只是一个 int),并且这个值必须传递回其他 3 个函数中的任何一个,以获取正确的内部“对象”来调用。假设 C API 保留了这些对象的列表,并为提供的句柄提供了正确的对象。
在独立脚本中运行时,一切正常。
我现在正在尝试使用 mod_perl 让这个 API 在 apache2 下运行。最初,一切正常 - 我将“句柄”返回给客户端,然后客户端使用相同的句柄值进行后续调用。但是,在一段(非常短的)不活动之后,C API 决定它已经丢失了它的“对象”列表并重新开始。
我认为这是因为正在卸载底层 .so 文件。
所以,我的问题:
我能做些什么来防止 apache/perl 卸载这个 .SO?唯一可行的方法是使用 -X 在调试模式下运行 apache。
谢谢
【问题讨论】: