3.UNIX 环境高级编程--文件 IO

本文深入探讨了文件系统的内部机制,包括进程与内核间的交互、文件描述符的作用、I/O操作原理等内容。详细介绍了文件描述符标志、文件状态标志、文件偏移量等概念,并解释了诸如open、close、lseek等函数的功能及使用场景。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1.进程(文件描述符表:文件描述符标志(close_on_exec),指针)---用户空间
2.内核(文件表项:文件状态标志(读写,添加,同步,非阻塞),当前文件偏移量---每个进程对该文件都有偏移量,指针),一个文件表项对应一个进程打开的一个文件
3.V节点(i节点(文件所有者,文件长度,文件实际数据块指针)),一个V节点对应一个实际文件。
1.每次write后,如果当期文件偏移量>文件长度,文件加长
2.设置o_append后,偏移量会被设置为文件长度
3.若调用 lseek 定位到当期文件的尾端,偏移量被设置为文件长度
4. lseek 函数只修改文件表项中的当期文件偏移量,不进行任何i/o操作
5. fork,dup 父进程和子进程的每一个打开的文件描述符共享同一个文件表项
6. 文件描述符标志作用域一个进程的一个描述符,文件状态标志作用域指向该文件表项的任何一个文件描述符。
7.两个系统之间的调用,都不是原子操作
8.sync 定期冲洗(flush),不等待磁盘完成
9.fsync 对指定的 fd 生效,并等待磁盘完成,还会更新文件属性,数据库需要确保修改过的块立刻写到磁盘上。
10.fdatasync 只影响文件的数据部分

这里写图片描述

2.文件描述符
这里写图片描述

3.函数 open 和 openat
这里写图片描述
这里写图片描述
这里写图片描述
这里写图片描述
这里写图片描述
这里写图片描述

  1. creat()
    这里写图片描述
    这里写图片描述

  2. close()
    这里写图片描述

  3. lseek()
    这里写图片描述
    这里写图片描述
    这里写图片描述
    这里写图片描述
    这里写图片描述
    这里写图片描述
    这里写图片描述
    这里写图片描述

7.read()
这里写图片描述
这里写图片描述

8.write()
这里写图片描述
这里写图片描述

9.I/O效率
这里写图片描述
这里写图片描述
这里写图片描述
这里写图片描述

10.文件共享
这里写图片描述
这里写图片描述
这里写图片描述
这里写图片描述
这里写图片描述
这里写图片描述

11.原子操作
这里写图片描述
这里写图片描述
这里写图片描述

12.函数 dup 和 dup2
这里写图片描述
这里写图片描述
这里写图片描述

13.函数 sync, fsync 和 fdataysnc
这里写图片描述

14.函数 fcntl
这里写图片描述
这里写图片描述
这里写图片描述
这里写图片描述
这里写图片描述
这里写图片描述
这里写图片描述
这里写图片描述
这里写图片描述
这里写图片描述

  1. 函数 ioctl
    这里写图片描述
    这里写图片描述

  2. /dev/fd
    这里写图片描述
    这里写图片描述
    这里写图片描述


https://baike.baidu.com/item/TOCTOU/8918334?fr=aladdin

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值