2015-06-10 3 views
0

Написание инструмента CLI в D, у меня есть счетчик выполнения, который представляет собой цикл, и печатает следующий номер, которому предшествует \ r.Заставить буфер вывода вывода на уровень

Вот минимальный пример, который показывает проблему

import std.stdio; 
import core.thread; 

void main(string[] args) { 
    for (int i = 0; i < 10000; i++) { 
     write("\r", i); 
     Thread.sleep(msecs(1)); 
    } 
} 

Я заметил, что, по крайней мере, Mac терминал, буфера вывода, который продувал раз в новой строке печатается, или определенное количество символов был напечатан.

Для меня это означает, что счетчик лагги и спорадически поднимается.

Мой вопрос: Как заставить промыть выходной буфер без печати новой строки?

+1

Конкретно: на каком языке вы пишете свою программу? Не могли бы вы показать нам пример кода? –

ответ

1

«Очищая буфер», вы, вероятно, имеете в виду промывку. stdout.flush; должен сделать трюк.

Очистка обычно относится к удалению всего вывода с консоли, чтобы получить чистое окно.

0

В дополнение к weltensturm's ответа на вызов stdout.flush периодически, вы можете попробовать вручную установить буферизацию с

stdout.setvbuf(0, _IOLBF); 

См IEEE Std 1003.1, 2013 - setvbuf (или локальные) для Справочника обзора.

Смежные вопросы