Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/unix/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Linux Unix中的无缓冲I/O_Linux_Unix - Fatal编程技术网

Linux Unix中的无缓冲I/O

Linux Unix中的无缓冲I/O,linux,unix,Linux,Unix,在UNIX中,大多数都是像读、写、关闭这样的非缓冲I/O。我不明白为什么它被称为非缓冲I/O UNIX读取是一个系统调用。下面是read的结构 ssize_t read(int fd, void *buf, size_t count); read()尝试从文件描述符fd向缓冲区读取最多个字节,从buf开始。甚至read函数也可以像这样读取输入 一个字符接一个字符,但最后它被存储在名为“buf”的缓冲区中。所以,这里也使用了缓冲区。因此,read如何成为无缓冲I/O。printf函

在UNIX中,大多数都是像读、写、关闭这样的非缓冲I/O。我不明白为什么它被称为非缓冲I/O UNIX读取是一个系统调用。下面是read的结构

       ssize_t read(int fd, void *buf, size_t count);
read()尝试从文件描述符fd向缓冲区读取最多个字节,从buf开始。甚至read函数也可以像这样读取输入 一个字符接一个字符,但最后它被存储在名为“buf”的缓冲区中。所以,这里也使用了缓冲区。因此,read如何成为无缓冲I/O。printf函数还将字符串文本存储在名为buffer的数组中。一旦到达数组,\n将打印缓冲区。这种机制也类似于read。那么,如何分类这些函数是非缓冲函数还是缓冲函数呢。在…上
它们是根据什么区分的?这些函数是缓冲的,而这些函数是非缓冲的。

您提供的
读取
函数是
非缓冲I/O
函数的一部分

术语
unbuffered
表示每个
read
write
调用内核中的系统调用

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

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


现在,希望或多或少是清楚的。

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

术语
unbuffered
表示每个
read
write
调用内核中的系统调用

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

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

现在,希望或多或少是清楚的