Почему kbhit () всегда возвращает 0, когда ввод вводится в консоли Eclipse? - PullRequest
2 голосов
/ 09 июля 2010

Я использую Eclipse CDT (Helios) для C / C ++ в Windows 7 x64.Сначала у меня возникла проблема с тем, что вывод не появлялся при запуске в консоли Eclipse до тех пор, пока программа не завершилась, хотя она работала во время работы в консоли Windows.Я обнаружил, что это связано с буферизацией в потоке stdout.Мне удалось отключить буферизацию с помощью следующего:

setvbuf(stdout, NULL, _IONBF, 0);

Но теперь я не могу понять, почему kbhit () всегда возвращает 0, даже когда в консоли нажимаются клавиши.Я попытался отключить буферизацию на stdin:

setvbuf(stdin, NULL, _IONBF, 0);

Но это не дало эффекта.Моя программа является оболочкой приложения.Я использую kbhit () и getch () для чтения ввода, который работает, когда программа запускается в консоли Windows, но не в консоли Eclipse.Что мне здесь не хватает?

...