Реализация kbhit () для Linux представлена на Начало программирования на Linux стр. 167. Вы можете прочитать его в режиме онлайн по указанной ссылке.
РЕДАКТИРОВАТЬ: я упоминаю kbhit (), потому что он был опубликован в качестве решения, прежде чем стало ясно, что вопрос связан с Linux. К сожалению, решение было удалено, что вызывает сожаление. Принцип состоит в том, что когда kbhit () возвращает ненулевое значение, последующее блокирование символьно-ориентированного вызова чтения не будет блокироваться. Это верно только для символьно-ориентированного ввода; getchar () и другие стандартные функции, которые читают stdio, обычно ориентированы на строку , поэтому блокируйте до новой строки.