我想将所有控制台输出重定向到我自己的 GUI 控制台,包括对 C 写函数的所有调用。
我尝试过的事情:
- 创建一个新的流类,但 stdio.stdout 是一个文件,您不能为其分配流
- 完全创建一个新文件类,但不能扩展结构
我是否需要更深入地了解 C 绑定?非常感谢任何帮助。
这个问题的典型解决方案在很多地方都有解释。这是一篇旧文章,解释了如何在 Windows 上执行此操作:http: //edn.embarcadero.com/article/10387
它在任何 UNIX 上的工作方式都相同。
简而言之:
第二种更简单的方法是在运行某个子进程时简单地使用该popen()
函数。这个标准功能或多或少地完成了上述所有工作。
我选择了另一条路径并编写了自己的 writeln 函数。由于显然我使用的库都没有直接进行终端输出,因此它似乎比管道或文件更麻烦。
一个简单但非常老套的方法是使用 C 的 freopen() 将标准输出重定向到一个临时文件,然后为您的控制台读入该文件。
您可能能够在操作系统级别将其重定向到管道中,然后让您的控制台在管道的另一端进行侦听。那会更干净,但更痛苦。
不管怎样,我认为 D 库不会有太大帮助——你会想要使用某种 C 库解决方案。