Пусть рассмотрим фрагмент кода:чтения (функция C), ведут себя странно
char *buffer = (char*) malloc(MAX_LENGTH_OF_COMMAND);
while(1){
printf("gsh> ");
read(0, buffer, sizeof(buffer));
}
И поведение довольно странно. Я имею в виду, что выход для ввода «вход, вход, вход» входного сигнала «gsh> gsh> gsh> gsh>».
Так что я ожидал, что во время процесса ввода-вывода есть прерывание (я имею в виду получение данных от пользователя), потому что ожидание пользователя - это потеря времени. Хорошо, я это понимаю. Но что, если я должен использовать буфер в следующей строке, например:
char *buffer = (char*) malloc(MAX_LENGTH_OF_COMMAND);
while(1){
printf("gsh> ");
read(0, buffer, sizeof(buffer));
// do something with buffer.
}
Поэтому необходимо иметь полный буфер (вход). Я этого не понимаю, и я не знаю, каким способом обеспечить доступность полного ввода.
Просьба пояснить. (и исправить мой ход мысли).
Заранее спасибо.
Вы не распечатываете входные данные, поэтому почему ничего, кроме вашего приглашения, не печатается? –
'sizeof (buffer)' не так, как вы думаете. 'buffer' - это указатель, поэтому это размер указателя (возможно, 4 байта), а не размер буфера, на который он указывает. – Barmar