美文网首页Unix环境高级编程
带缓冲的IO和不带缓冲的IO

带缓冲的IO和不带缓冲的IO

作者: 桐桑入梦 | 来源:发表于2020-01-09 16:12 被阅读0次

文件描述符:

文件描述符是一个非常小的非负整数,是内核用来标识正在进行访问的文件。

标准输入/输出/出错

shell给每个程序打开了三个文件描述符,STDIN_FILENO,STDOUT_FILEONO,STDERR_FILENO,默认这三个文件描述符都链向终端。

不带缓冲的IO

函数open read write lseek close提供了不带缓冲的IO,这些函数都是用文件描述符.

ssize_t read(int fd,void *buf,size_t count)
从fd标识的文件中一次读取count字节的字符到buf,返回一次读取的字节数,小于等于count
ssize_t write(int fd,void *buf,size_t count)
从buf中一次写count字节到fd标识的文件中,返回一次写入的字节数,小于等于count

eg.所谓的不带缓冲是指用户层没有缓冲,通过系统调用直接对磁盘文件进行读写。但是对于内核来说,还是进行了缓存,内核把数据写到内核缓冲存储器中,当缓冲器溢出的时候再进行实际的IO操作.

标准IO(带缓冲的IO)

标准IO通过库函数提供了无缓冲IO的带缓冲的IO接口
在用户层建立一个流缓冲区(重要内容),库函数向流缓冲区读写数据,流缓冲区溢出时进行系统调用,即再调用无缓冲的IO
fwrite fread gets都是标准的IO

数据流向对比

无缓冲IO操作数据流向:
数据----> 内核缓冲区---->磁盘
标准IO操作数据流向:
数据---->流缓冲区---->内核缓冲区---->磁盘

BUFSIZE

标准IO函数无需担心如何选取最佳缓冲区的大小
不带缓冲的IO使用不同BUFSIZE影响程序的效率

相关文章

  • 带缓冲的IO和不带缓冲的IO

    文件描述符: 文件描述符是一个非常小的非负整数,是内核用来标识正在进行访问的文件。 标准输入/输出/出错 shel...

  • Linux IO总结

    1. 文件IO,不带缓冲的IO 函数:read, write, open, close, pread, pwrit...

  • APUE文件io

    第三章 文件i/o 3.1引言 不带缓冲的io(unix系统在内核中设有缓冲区,这个不带缓冲意思是用户不自己缓冲)...

  • 软件架构设计-操作系统

    操作系统 直接IO与缓冲IO 缓冲io又称作标准I/O,大多数文件系统的默认IO操作都是缓冲IO。在linux的缓...

  • 非缓冲io与缓冲io

    系统调用 在讲解io之前,先介绍下系统调用。系统调用是操作系统内核提供给外部访问的最小接口,运行在内核态,如果应用...

  • io缓冲

    此段代码会输出8个“*”,因为printf标准输出默认是行缓存,fork子进程会把父进程缓存区同样copy一份。缓...

  • java-nio学习之java io比较

    java io 基本介绍 java nio和io区别 面向流与面向缓冲 IO是面向流的,NIO是面向缓冲区的。 J...

  • IO流——字节流4种copy方式

    JAVA基本IO流框架 字节流整体可分为带缓冲区的流和不带缓冲区的流可分为逐字节复制的流和逐块复制的流(块其实就是...

  • Java NIO 和 IO 之间的主要差别

    NIO 和 IO 之间的主要差别 IO NIO 面向流 面向缓冲 阻塞IO 非阻塞IO 无 ...

  • NIO

    传统IO和普通IO的区别 传统IO:面向流,阻塞IO(Blocking), selector NIO:面向缓冲区,...

网友评论

    本文标题:带缓冲的IO和不带缓冲的IO

    本文链接:https://www.haomeiwen.com/subject/fabyactx.html