read()是不带缓冲的, fread()是带缓冲的。
使用带缓冲的io函数可以减少陷入内核态的次数,
比如,要读取8000字节的数据,
read (fd, buf, 1)需要陷入内核态8000次;
假如fread()的缓冲区大小为4000,fread(buf, 1, 1, file)虽然也需要调用8000次函数,但是只需要陷入内核态两次。
混用不带缓冲和带缓冲的io函数会有什么问题?
带缓冲的io函数会多读一些数据,如果这时候再用不带缓冲的io函数读一次,中间就会少读一些数据。
read()是不带缓冲的, fread()是带缓冲的。
使用带缓冲的io函数可以减少陷入内核态的次数,
比如,要读取8000字节的数据,
read (fd, buf, 1)需要陷入内核态8000次;
假如fread()的缓冲区大小为4000,fread(buf, 1, 1, file)虽然也需要调用8000次函数,但是只需要陷入内核态两次。
混用不带缓冲和带缓冲的io函数会有什么问题?
带缓冲的io函数会多读一些数据,如果这时候再用不带缓冲的io函数读一次,中间就会少读一些数据。