static int x_post_config(apr_pool_t *pconf, apr_pool_t *plog,
apr_pool_t *ptemp, server_rec *s)
{
system("/home/user/workspace/CheckVideo/Debug/CheckVideo.exe");
return OK;
}
static void register_hooks(apr_pool_t* pool)
{
ap_hook_post_config(x_post_config, NULL, NULL, APR_HOOK_MIDDLE);
}
module AP_MODULE_DECLARE_DATA MyModule_module = {
STANDARD20_MODULE_STUFF,
NULL,
NULL,
NULL,
NULL,
NULL,
register_hooks
};
我用 C 语言开发了这个模块,并使用 Apache 扩展工具(apxs)将它集成到 Apache 服务器中。post_config
从钩子调用它时,我可以在后台使用系统调用运行可执行文件。
现在我想更改相同的代码以仅在 Apache 上调用特定的 mime 类型(如 .mp4 视频)时使用系统调用运行可执行文件。因此post_config
,我想在 Apache 的响应阶段运行这个可执行文件,而不是 。我正在尝试执行相同system()
的功能,例如:
static int My_handler(request_rec* r)
{
if (strcmp(r->content_type, "video/mp4"))
{
system("/home/user/workspace/CheckVideo/Debug/CheckVideo.exe");
}
return DECLINED;
}
static void register_hooks(apr_pool_t* pool)
{
ap_hook_handler(My_handler, NULL, NULL, APR_HOOK_MIDDLE);
}
module AP_MODULE_DECLARE_DATA My_handler = {
STANDARD20_MODULE_STUFF,
NULL,
NULL,
NULL,
NULL,
NULL,
register_hooks
};
我想在视频背景中连续运行这个可执行文件,它应该只为特定的视频类型调用。那么如何使用来自 Apache 模块的系统调用来调用可执行文件ap_hook_handler
呢?