1
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呢?

4

0 回答 0