Eclipse控制台仅在程序完成后才写入输出

时间:2013-10-21 15:02:09

标签: eclipse console d

我有以下D程序:

void main( string[] args )
{
    import core.thread, std.stdio;

    for ( int i = 10; i > 0; --i )
    {
        writeln( i );
        Thread.sleep(dur!"seconds"(1) );
    }
    writeln("Bang!");
}

从10减少到1,然后输出"Bang!"。在每个输出之间,程序等待一秒的持续时间。当我在Eclipse(Eclipse平台,版本:3.8.1,构建id:debbuild)中使用DDT插件(版本:0.8.1.v201309231)运行此程序时,控制台输出正如预期的那样,但它只会在程序已经运行完毕。

当我从控制台启动相同的程序时,程序就会按预期运行。

我该如何解决?

1 个答案:

答案 0 :(得分:7)

在睡眠线之前放入stdout.flush()。 stdout是缓冲的,因此flush确保它实际上已经到达设备而不是在缓冲区中等待。