Unix中的无缓冲I / O

时间:2015-08-19 10:57:43

标签: linux unix

在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,将打印缓冲区。这种机制也类似于阅读。那么,如何分类这些函数是否是无缓冲的并且是缓冲的。上 他们区分哪些基础,功能是缓冲的,这些是无缓冲的。

1 个答案:

答案 0 :(得分:0)

您提供的read功能是unbuffered I/O个功能的一部分。

术语unbuffered表示每个readwrite在内核中调用系统调用。

如果是read,它不会逐个字符地读取,但会通过单个内核调用读取您使用count参数指定的字节数。

buffered库提供的standard I/O功能的目标是使用最少数量的readwrite来电。它还可以自动执行最佳缓冲区大小count计算,以获得更好的性能。

希望,现在,它或多或少地清楚。