Почему Пустой printf позволяет мне продолжить чтение данных из stdin?
Код
while (1)
{
keycode = key_hook();
if (keycode == SPACE || keycode == BKSPACE)
{
render_again = 1;
}
if (keycode == ESC)
break;
if (render_again)
{
render_again = 0;
render(all);
}
dprintf(1, ""); //I have no idea why this prevents the program from freezing
}
int key_hook()
{
char buffer[4];
read(0, buffer, 4);
return (*(unsigned int *)buffer);
}
Итак, этот фрагмент кода обрабатывает перерисовку текста на экране. Некоторые строки текста подчеркиваются или выделяются с помощью termcaps (tputs(tgetstr("us, NULL")......)
. Все печатается нормально, но после первого перерисовывания текста while, по-видимому, замирает, если не присутствует dprintf/printf
. Функция key_hook
просто считывает 4 bytes
из stdin
и преобразует их в int
.