【发布时间】:2016-05-09 17:47:11
【问题描述】:
我正在用 C++ 编写一个必须使用标准输出来输出响应的应用程序(它是一个从 Apache Web 服务器调用的 CGI-BIN 守护进程,Apache 获取二进制文件的标准输出作为响应)。
最大的问题是我使用的是共享库,它也将日志输出到标准输出,这些日志直接发送到 http 客户端,使其无法解析实际的 HTTP 响应。
我的问题是,有什么方法可以抑制来自共享库的输出?
PS:我在 Linux 上运行它并使用 *.so 库
提前致谢
【问题讨论】:
-
您必须使用任何必要的选项(或代码黑客)来重建库以抑制它们。也就是说,您是否确定该库正在输出到 stdout 而不是 stderr?
-
是的,我确定库正在输出,它甚至会在日志上打印其名称。嗯,它是第三方库,无法重建。
-
如果由于某种原因@JesperJuhl 的回答没有帮助,另一种选择可能是将您的 CGI 二进制文件拆分为一个不使用此 .so 的面向 Apache 的一侧,以及一个使用该 .so 的辅助可执行文件;该辅助可执行文件将使用不同的标准输出生成,并具有到主要可执行文件的专用通信通道(然后仅充当中继)。相当丑陋...比追踪第三者并让他们修复损坏的图书馆更丑陋:-)
-
这是一个什么样的库?也许有更好的替代品?
标签: c++ apache shared-libraries cgi-bin