Я хочу напечатать каждый символ, который читается readline по мере его чтения. В настоящее время я могу явно распечатать все после того, как он полностью прочитан. Это для которая написана.Печатать символ в stdin как чтение по строке чтения
0
A
ответ
0
readline() является функцией блокировки и ждет полной строки.
Просто используйте read() в цикле. Если новый символ read() не будет возвращен 0, а если присутствует символ, он вернет 1 (или n, если n символов в stdin после последнего вызова read(), и вы предоставите буфер достаточно большой). Обычно стандартный ввод имеет дескриптор файла 0 зарезервирован для него, так что ваш код может быть как:
char buf[1];
int i;
while(1) {
i = read(0, buf, 1);
if (i>0)
{
// process character
}
}
Функция называется 'readline' по причине; эта причина заключается в том, что она позволяет пользователю вводить «строку» текста и редактировать, пока они делают это перед вызывающей программой, будь то оболочка или любая другая интерактивная программа, которая увидит каждого персонажа. Я думаю, вы пытаетесь использовать неправильную функцию. Вам понадобится что-то вроде входного режима raw curses - возможно, без использования «curses», поскольку это захватывает весь экран, и вы не хотите, чтобы это делалось. Тем не менее, Бэшу удается интерпретировать информацию, как она идет; Я не проверял, использует ли он библиотеку 'readline', но вы можете посмотреть. –
Мне нужно повторить то, что набрано обратно в оболочку в основном. У меня проблемы с этим. Это не должно быть через readline, мне просто нужна помощь, повторяющая все. Однако я использую readline, чтобы действительно прочитать команду. – m0butt
ОК. Вы можете прочитать руководство для библиотеки readline, как я могу. Или вы можете подождать, когда кто-то, кто знает ответ, придет и поможет вам. Чем больше я думаю об этом, такие вещи, как выполнение вкладок в Bash, предполагают, что Bash управляет им. Таким образом, вы можете посмотреть исходный код Bash и посмотреть, использует ли он библиотеку readline. Если это так, вы можете увидеть, что они используют в библиотеке. Если нет, это может дать вам некоторые идеи ... –