已经知道了ctrl+d的作用
那么当缓冲区中同时有一些数据和EOF的时候 调用read函数读取数据(设置的一次性读取的数据量大于缓冲区中的数据量)的时候 read函数会一并处理缓冲区中的EOF吗?
测试代码:
#include <stdio.h>
#include <unistd.h>
#include <string.h>
int main()
{
char c = '*';
char buf[20];
sleep(5);
memset(buf, 0, sizeof(buf));
int rc = read(0, &buf, 19);
printf("rc:%d buf:%s\n", rc, buf);
memset(buf, 0, sizeof(buf));
rc = read(0, &buf, 19);
printf("rc:%d buf:%s\n", rc, buf);
return 0;
}
该程序的输入输出:
也就是将EOF看成一个特殊字符的情况下 read函数不会同时处理数据和EOF 哪怕设置的读取数量足够大