2013-10-21 2 views
2

끝난 후에 출력을 기록 I 다음 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!"); 
} 

은 1부터 10까지 카운트하고 "Bang!"를 출력한다. 각 출력 사이에 프로그램은 1 초의 시간 동안 대기합니다. DDT 플러그인 (버전 : 0.8.1.v201309231)을 사용하여 Eclipse (Eclipse Platform, 버전 : 3.8.1, 빌드 ID : debbuild)에서이 프로그램을 실행하면 콘솔 출력이 예상대로 표시되지만 프로그램이 실행을 마쳤습니다.

콘솔에서 동일한 프로그램을 시작하면 프로그램이 정상적으로 작동합니다.

어떻게 해결할 수 있습니까?

+1

시도해보십시오. stdout.flush(); 잠자기 전에. 이클립스 너무 플러시되지만 시도해 볼 가치가 있는지 확실하지 않다 –

답변

7

슬립 라인 앞에 stdout.flush()를 넣으십시오. stdout은 버퍼링되므로 플러시는 버퍼에서 대기하는 대신 실제로 장치로 나가는 지 확인합니다.

+0

나는 항상 stdout 라인 버퍼 된 것 같아요 ... – DejanLekic

+1

나는 여기에 무슨 일이 있는지 잘 모르겠지만, 수신 버퍼가 끝나는 경우에만 버퍼링이 발생한다고 생각합니다. 일반 터미널. 그렇지 않으면 다른 파일과 동일한 버퍼링을 얻습니다. (아마 다른 파일이기 때문입니다). 이클립스에서 또 다시 추측하고 있는데, 아마 파이프를 통해 일식 프로세스와 대화하고 있으며 대화식 터미널로 등록하지 않아 전체 버퍼링으로 돌아 간다. –

+0

그래, 그런 것 같아. – DejanLekic

관련 문제