【发布时间】:2019-01-20 04:58:15
【问题描述】:
这是我的第一个问题!
我即将将一些正常工作的 C++ 代码从 UNIX 移植到 Windows,它通过管道将 stdout 和 stderr 重定向到自定义 GUI 组件。我需要它来显示来自第三方库的反馈,该库仅在我的 GUI 上将消息输出到标准输出。
根据这个答案https://stackoverflow.com/a/617158 这应该可以工作。事实上,链接中的代码在使用 Visual Studio 2017 构建的新命令行应用程序中按预期工作。但是在我现有的 GUI 应用程序中,对 _fileno(stdout) 和 _fileno(stderr) 的调用都返回 -2 而不是预期值1和2,所以什么都没有发生。对相关函数进行硬编码 1 和 2 也无法使其正常工作。
谁能解释一下
- 返回值 -2 究竟意味着什么? (谷歌搜索了很多 - 没有成功)
- 如果没有控制台的应用程序甚至可以在 Windows 上实现我想要的功能?
- 如果可能,有哪些相关步骤可以使其正常工作?
供您参考,我收集了迄今为止在 Linux 和 Mac OS 上编程的主要经验,因此这对于有经验的 Windows 人员来说可能是显而易见的。 GUI 应用程序基于 JUCE 框架,因此我使用的是由 JUCE 工具 Projucer 创建的自动生成的 Visual Studio 项目
【问题讨论】: