《UNIX环境高级编程》笔记:第3章 文件I/O

本文详细探讨了UNIX系统中的文件I/O操作,包括文件描述符、open、close、lseek、read、write等函数的使用,以及I/O效率、文件共享和原子操作。特别强调了原子操作在多进程文件操作中的重要性,同时讲解了dup、dup2、sync、fsync、fdatasync、fcntl和ioctl等函数的功能和应用场景。文件描述符管理和文件系统一致性维护是章节重点。

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

“本章说明了UNIX系统提供的基本I/O函数。因为read和write都在内核执行,所以称这些函数为不带缓冲的I/O函数。在只使用read和write情况下,我们观察了不同的I/O长度对读文件所需时间的影响。我们也观察了许多将已写入的数据冲洗到磁盘上的方法,以及它们对应用程序性能的影响。

在说明多个进程对同一文件进行追加写操作以及多个进程创建同一文件时,本章介绍了原子操作。也介绍了内核用来共享打开文件信息的数据结构。”


本章介绍的打开文件的内核数据结构可以说是操作系统中最重要的部分之一。


3.2 文件描述符

3.3 函数open和openat

今后将碰到很多和函数xxx类似的、名为xxxat的函数,它们的作用是:1) 让线程可以使用相对路径名打开目录中的文件;2) 可以避免time-of-check-to-time-of-use错误。

time-of-check-to-time-of-use(TOCTTOU)错误说明了原子操作的必要性。

3.4 函数create

3.5 函数 close

当一个进程终止时,内核自动关闭它所有打开的文件。很多程序都利用了这一功能而不显式地用close关闭打开的文件。


3.6 函数 lseek

函数名字中的l表示长整形。在C语言引入长整形之前,用函数seek和tell提供类似功能。


3.7 函数 read

3.8 函数 write

3.9 I/O的效率

3.10 文件共享

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值