Работа над сетевым проектом и использование select() и FD_ISSET для одновременного просмотра stdin, а также TCP-соединений. Я не могу записать запись клавиатуры в буфер, чтобы я мог ее обработать. Вот что у меня есть:Копирование stdin в буфер
if (FD_ISSET(0, &read_set)) {
fprintf(stdout, "Keyboard input noted:\n");
size_t bytes = fread(buffer, sizeof(char), BUFFSIZE, stdin);
fwrite(buffer, sizeof(char), bytes, stdout);
fflush(stdout);
if (bytes < BUFFSIZE)
if (feof(stdin))
break;
fprintf(stdout, "buffer: %s\n", buffer);
}
Первые Printf заявление выхода, как только я ударил клавишу ввода, но второй один не срабатывает. Может ли кто-нибудь сказать мне, что мне не хватает? Благодаря!
EDIT: Когда я изменяю size_t bytes = fread(buffer, sizeof(char), BUFFSIZE, stdin);
к чему-то вроде
size_t bytes = fread(buffer, sizeof(char), 2*sizeof(char), stdin);
, а затем ввести в нечто вроде aa<enter>
я могу заставить его выход, но это слишком мало. Мне нужно, чтобы он возвращался из fread при чтении ключа ввода.
Попробуйте записать 'bytes' в stderr. – woolstar
Вы нажимаете 'break'? –
@woolstar Я изменил строку fwrite на 'fwrite (buffer, sizeof (char, ytes, stderr);' - все еще нет вывода – Alex