【发布时间】:2010-09-05 16:18:14
【问题描述】:
我正在将现有的 C++ 代码从 BSD 项目包装到我们自己的自定义包装器中,我希望将其集成到我们的代码中,并且尽可能少地进行更改。此代码使用fprintf 打印到stderr 以记录/报告错误。
我想将此重定向到同一进程中的其他位置。在 Unix 上,我使用 socketpair 和 thread 完成此操作:套接字的一端是我发送 stderr 的地方(通过调用 dup2)另一端在一个线程中进行监控,然后我可以在其中处理输出。
这在 Windows 上不起作用,因为套接字与文件句柄不同。
我在网上找到的所有文档都显示了如何重定向子进程的输出,这不是我想要的。如何在写入输出时在同一进程中重定向 stderr 以获取某种回调? (在你这么说之前,我已经尝试过SetStdHandle,但找不到任何方法来完成这项工作)......
【问题讨论】: