美文网首页
第十章《系统级I/O》

第十章《系统级I/O》

作者: ShawnIsACoder | 来源:发表于2019-01-20 17:42 被阅读0次

    Unix I/O

    所有的I/O设备都被模型化为文件,因此所有的输入和输出操作都被当做对相应文件的读和写来执行,这种方式称为Unix I/O,其使得所有的输入和输出都能以一种统一且一致的方式来进行

    文件

    包含:

    • 普通文件:又分为文本文件二进制文件
    • 目录:包含一组链接的文件,其中每一个链接都将一个文件名映射到一个文件,这个文件还有可能是一个目录
    • 套接字:用来与另一个进程进行跨网络通信的文件

    打开文件

    通过open函数来打开一个已存在的文件或创建一个新的文件,包含以下几种方式:

    • O_RDONLY:只读
    • O_WRONLY:只写
    • O_RDWR:可读可写
    • O_CREAT:如果文件不存在,就创建它的一个截断文件
    • O_TRUNC:如果文件存在,就截断它
    • O_APPEND:在每次写操作前,设置文件的位置到文件的结尾

    通过close函数关闭一个打开的文件

    读写文件

    通过read函数从描述符为fd的当前文件位置复制最多n个字节到内存位置buf,返回-1表示一个错误,而返回0表示EOF,否则返回值表示的是实际传送的字节数量

    通过write函数从内存位置buf复制最多n个字符到描述符为fd的当前文件位置

    共享文件

    Linux内核用三个相关的数据结构来表示打开的文件:

    • 描述符表:每个进程都有它独立的描述符表,它的表项是由进程开发的文件描述来索引的
    • 文件表:打开文件的集合是由一张文件表来表示的,所有的进程共享这张表
    • v-node表:所有的进程都共享这张表,每个表项包含stat结构中的大部分信息

    I/O 重定向

    I/O 重定向操作符允许用户将磁盘文件和标准输入输出联系起来

    在代码中可以使用dup2函数来实现

    相关文章

      网友评论

          本文标题:第十章《系统级I/O》

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