在下面的代码片段,无论我怎么输入的长期投入(编辑:我复制和粘贴在一个随机字符串),说有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