2013-03-07 2 views
2

Мне нужно прочитать stdin в Linux, хотя моя программа получит только сообщения без новой строки.Чтение из STDIN без нажатия ENTER

Я попробовал этот код, но не работает:

int main (void) 
{ 
    char p_char[48]; 

    memset(p_char, 0, sizeof(p_char)); 
    fcntl(STDIN_FILENO, F_SETFL, FNDELAY); 
    read(STDIN_FILENO, p_char, sizeof(p_char)); 

} 

Кто есть предложение?

+3

Это то, что вы пытаетесь сделать? http://stackoverflow.com/questions/421860/cc-capture-characters-from-standard-input-without-waiting-for-enter-to-be-pr – Mike

+0

refr to http://stackoverflow.com/questions/ 7469139/what-is-analog-to-getch-getche-in-linux – MOHAMED

ответ

4

Вам нужно будет изменить настройки терминала, чтобы каждый символ был отправлен немедленно. Вы можете сделать это, манипулируя termios (на странице руководства есть детали).

По существу он просто включает в себя создании два termios структур, инициализирует один с текущими параметрами с tcgetattr, копированием-структуры в другую структуру, изменив настройку буфера в нем, а затем установить терминал с новой структурой с tcsetattr (и конечно, вернув его, когда закончите).

+1

пример использования терминов http://stackoverflow.com/questions/7469139/what-is-equivalent-to-getch-getche-in-linux – MOHAMED

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