В следующем фрагменте, независимо от того, сколько времени ввода я вставляю (EDIT: я копирую и вставляя случайную строку), скажем строку с 9998 символами, read() останавливается когда i = 4095. Он утверждает, что он читается в EOF-символе, но моя строка не имеет символа EOF (например, я попробовал строку из 9998 'a). Возвращаемое значение также указывает на отсутствие ошибки в read(). Почему read() читает только 4095 байт?Unistd read() максимальный размер
#include <unistd.h>
#include <stdio.h>
int main() {
char temp;
char buf[10000];
int i = 0;
while(read(STDIN_FILENO, &temp, 1) > 0) {
buf[i] = temp;
i++;
}
printf("%d\n", i);
}
Edit: Для того, чтобы уточнить, прочитайте() не буквально утверждать, что он прочитал в EOF символ, за https://linux.die.net/man/2/read чтения() возвращает 0, когда она движется мимо EOF.
"* Он утверждает, что он читается символом EOF, *« А? Что это за «это», о котором вы говорите? И что такое «характер EOF»? –
Как вы используете программу? –
@FrederikDeweerdt, по-видимому, если он читает в EOF, то никоим образом последний 'printf' не распечатает ничего – artm