你绝对想不到习以为常的read、fread函数也能问出这么多不懂的问题吧?保持学习激情,向胜利冲刺!
文章目录
缓冲IO与非缓冲IO
linix对IO文件的操作分为不带缓存的IO操作和标准IO操作(即带缓存)。
不带缓存
:open 、read、write,属于系统调用,在用户空间没有缓冲,在内核空间还是进行了缓存的。
数据-----内核缓存区----磁盘。假设内核缓存区长度为100字节,你调用ssize_t write (int fd,const void * buf,size_t count);写操作时,设每次写入count=10字节,那么你要调用10次这个函数才能把这个缓存区写满,没写满时数据还是在内核缓冲区中,并没有写入到磁盘中,内核缓存区满了之后或者执行了fsync