在UNIX中,大多数人都说像read,write,close是无缓冲的I / O.我不明白为什么它被称为无缓冲I / O.在 UNIX读取是系统调用。以下是阅读的结构。
ssize_t read(int fd, void *buf, size_t count);
read()尝试从buf开始读取从文件描述符fd到缓冲区的字节数。甚至读取功能读取输入就好 逐个字符,但最后它存储在这里命名的缓冲区" buf"。所以,这里也使用缓冲区。因此,如何读取成为无缓冲的I / O.printf函数还将字符串文字存储在名为buffer的数组中。一旦数组到达\ n,将打印缓冲区。这种机制也类似于阅读。那么,如何分类这些函数是否是无缓冲的并且是缓冲的。上 他们区分哪些基础,功能是缓冲的,这些是无缓冲的。
答案 0 :(得分:0)
您提供的read
功能是unbuffered I/O
个功能的一部分。
术语unbuffered
表示每个read
或write
在内核中调用系统调用。
如果是read
,它不会逐个字符地读取,但会通过单个内核调用读取您使用count
参数指定的字节数。
buffered
库提供的standard I/O
功能的目标是使用最少数量的read
和write
来电。它还可以自动执行最佳缓冲区大小count
计算,以获得更好的性能。
希望,现在,它或多或少地清楚。