Im folgenden Ausschnitt, egal wie lange eine Eingabe ich (EDIT: Ich bin Kopie und Einfügen in einer zufälligen Zeichenfolge), sagen eine Zeichenfolge mit 9998 Zeichen, lesen() stoppt Wenn i = 4095. Es gibt an, dass es in einem EOF-Zeichen gelesen wird, aber meine Zeichenfolge hat kein EOF-Zeichen (zum Beispiel habe ich eine Zeichenfolge von 9998 'a's versucht). Der Rückgabewert deutet auch darauf hin, dass es keinen Fehler von read() gibt. Warum liest read() nur 4095 Bytes ein?Unistd lesen() maximale Größe
#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: Um zu klären, lesen() sagen nicht wörtlich, dass es in einem EOF-Zeichen lesen, pro https://linux.die.net/man/2/read read() 0 zurück, wenn es vorbei an der EOF bewegt.
"* Es heißt, es in einem EOF-Zeichen lesen, *" Huh? Über welches "es" sprichst du? Und was ist ein "EOF-Charakter"? –
Wie benutzen Sie das Programm? –
@FrederikDeweerdt anscheinend, wenn er in EOF liest dann keine Möglichkeit, die letzte 'printf' würde irgendetwas ausdrucken – artm