Io D将标准输出重定向到函数
我想将所有控制台输出重定向到我自己的GUI控制台,包括对C写函数的所有调用 我尝试过的事情:Io D将标准输出重定向到函数,io,d,output,phobos,Io,D,Output,Phobos,我想将所有控制台输出重定向到我自己的GUI控制台,包括对C写函数的所有调用 我尝试过的事情: 正在创建一个新的流类,但stdio.stdout是一个文件,不能为其分配流 创建一个新的文件类,但不能扩展结构 我需要更深入地了解C绑定吗?非常感谢您的帮助。一种简单但非常有技巧的方法是使用C的freopen()将stdout重定向到一个临时文件,然后在控制台中读取该文件 您可以在操作系统级别将其重定向到管道中,然后让控制台监听管道的另一端。那会更干净,但更痛苦 不管怎样,我不认为D库会有多大帮助—
- 正在创建一个新的流类,但stdio.stdout是一个文件,不能为其分配流
- 创建一个新的文件类,但不能扩展结构
我需要更深入地了解C绑定吗?非常感谢您的帮助。一种简单但非常有技巧的方法是使用C的freopen()将stdout重定向到一个临时文件,然后在控制台中读取该文件 您可以在操作系统级别将其重定向到管道中,然后让控制台监听管道的另一端。那会更干净,但更痛苦
不管怎样,我不认为D库会有多大帮助——你会想使用某种C库解决方案。一种简单但非常有技巧的方法,就是使用C的freopen()将stdout重定向到一个临时文件,然后在控制台中读取该文件 您可以在操作系统级别将其重定向到管道中,然后让控制台监听管道的另一端。那会更干净,但更痛苦
不管怎样,我不认为D库会有多大帮助——你需要使用某种C库解决方案。这个问题的典型解决方案在很多地方都有解释。下面是一篇解释如何在Windows上执行此操作的老文章: 它在任何UNIX上的工作方式都是相同的 简言之:
第二种方法更简单,只要在运行某个子进程时使用
popen()
函数即可。此标准函数可以完成以上所有功能。此问题的典型解决方案在许多地方都有说明。下面是一篇解释如何在Windows上执行此操作的老文章:
它在任何UNIX上的工作方式都是相同的
简言之:
第二种方法更简单,只要在运行某个子进程时使用
popen()
函数即可。这个标准函数完成了以上所有的功能。我选择了另一个路径并编写了自己的writeln函数。显然,我使用的库中没有一个是直接输出终端的,因此它似乎比管道或文件更简单。我选择了另一条路径,编写了自己的writeln函数。显然,我使用的库中没有一个是直接进行终端输出的,因此它看起来不像管道或文件那样麻烦。如果子进程是您的D应用程序,那么这就行了。如果子应用程序是您自己的工作,那么您可以使用某种形式的IPC将输出发送到您的GUI。如果子进程是您的D应用程序,这将起作用。如果子应用程序是您自己的工作,那么您可以使用某种形式的IPC将输出发送到GUI。