在下面的代碼片段,無論我怎麼輸入的長期投入(編輯:我複製和粘貼在一個隨機字符串),說有9998個字符的字符串,閱讀()停止當我= 4095.它聲明它讀取EOF字符,但我的字符串沒有EOF字符(例如,我嘗試了一串9998'a's)。返回值還表明read()沒有錯誤。爲什麼read()只能讀取4095字節?Unistd閱讀()最大尺寸
#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);
}
編輯:澄清,讀()不字面上說明它在一個EOF字符閱讀,每https://linux.die.net/man/2/read讀()返回0它移動過去的EOF時。
「*它表明它是以EOF字符讀取的,*」咦?你在說什麼「它」?什麼是「EOF字符」? –
你如何使用該程序? –
@FrederikDeweerdt @FrederikDeweerdt顯然,如果他在EOF中讀取,那麼沒辦法,最後一個'printf'會打印出任何東西 – artm