【TLPI读书笔记】 四、文件I/O:通用的I/O模型
概述
- 所有执行I/O操作的系统调用都以文件描述符,一个非负整数的,来指代打开的文件。
- 文件描述符用以表示所有类型的已打开文件,包括管道、FIFO、socket、终端、设备和普通文件。
- 针对每个进程,文件描述符都自成一套。
- 文件描述符
0
,1
,2
表示标准输入,标准输出,标准错误,这三个文件描述符在进程中始终是打开的 下面介绍执行文件I/O操作的4个主要系统调用:
fd = open(pathname, flags, mode)
函数打开pathname
所标识的文件,并返回文件描述符,用以在后续函数调用中指代打开的文件numread = read(fd, buffer, count)
调用从fd
所指代的打开文件中读取至多count
字节的数据,并存储到buffer
中numwritten = write(fd, buffer, count)
调用从buffer
中读取多达count
字节的数据写入由fd所指代的已打开文件中status = close(fd)
在所有输入/输出操作完成后,调用close()
,释放文件描述符fd
以及与之相关的内核资源