次のスニペットでは、どのくらい入力を入れても(編集:ランダムな文字列にコピーして貼り付けています)、9998文字の文字列、read私は4095です。それはEOF文字で読んでいると言いますが、私の文字列はEOF文字を持っていません(たとえば、私は9998の文字列を試しました)。戻り値は、read()からのエラーもないことを示しています。なぜread()は4095バイトだけを読み込むのですか?Unstd 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);
}
編集:(読み、明確にするためには)文字通り、それはhttps://linux.die.net/man/2/read読み取り()はEOFを過ぎて移動するときに0を返すごとに、EOF文字で読むことを述べるものではありません。
"*それはEOF文字で読み込まれると述べています。あなたが話している "それ"は何ですか?そして "EOFキャラクター"とは何ですか? –
どのようにプログラムを使用していますか? –
@FrederikDeweerdt明らかに、もし彼がEOFを読んでいれば、最後の 'printf'は何も出力しません。 – artm