gpt4 book ai didi

linux - Unix 中的无缓冲 I/O

转载 作者:太空宇宙 更新时间:2023-11-04 03:34:25 25 4
gpt4 key购买 nike

在 UNIX 中,大多数都说像 read、write、close 都是无缓冲 I/O。我不明白为什么它被称为无缓冲 I/O。在UNIX read 是一个系统调用。以下是read的结构。

       ssize_t read(int fd, void *buf, size_t count);

read() 尝试从文件描述符 fd 读取最多 count 个字节到从 buf 开始的缓冲区中。甚至 read 函数也读取输入一个字符接着一个字符,但最后它被存储在此处名为“buf”的缓冲区中。所以,这里也使用了缓冲区。因此,read 如何成为无缓冲 I/O.printf 函数还将字符串文字存储在称为 buffer 的数组中。一旦数组达到\n,缓冲区就会被打印。这个机制也和read类似。那么,如何区分这些函数是无缓冲的还是有缓冲的。在它们根据什么来区分函数是缓冲的还是非缓冲的。

最佳答案

您提供的read函数是无缓冲I/O函数的一部分。

术语无缓冲意味着每次读取写入都会调用内核中的系统调用。

read的情况下,它不会逐个字符地读取,而是通过一次内核调用读取您使用count参数指定的字节数。

标准 I/O 库提供的缓冲函数的目标是使用最少数量的读取写入调用。它还可以自动计算最佳缓冲区大小的count,以获得更好的性能。

希望现在情况或多或少已经清楚了。

关于linux - Unix 中的无缓冲 I/O,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32093576/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com