读写文件
Unix系统通过 read 和 write 系统调用完成文件的底层数据传输。
read 系统调用:
- 原型:
ssize_t read(int fd, void *buf, size_t n) - 从文件描述符
fd中读取最多n个字节到buf。 - 返回值:实际读取的字节数。返回0表示文件结尾(EOF),返回-1表示错误。
- 短计数(short count):实际读取的字节数可能小于请求的
n字节,原因包括:- 读取普通文件时遇到EOF。
- 从终端读取一行文本(通常以换行符结束)。
- 从网络套接字读取时数据尚未到达。
write 系统调用:
- 原型:
ssize_t write(int fd, const void *buf, size_t n) - 从
buf复制最多n个字节到文件描述符fd。 - 返回值:实际写入的字节数,出错时返回-1。
- write也可能发生短计数,但在普通磁盘文件中较少见。
ssize_t 与 size_t 的区别:
size_t是无符号整数类型,表示大小。ssize_t是有符号整数类型,允许返回-1表示错误。
链接到
- 上一个知识点:10.2 打开关闭文件
- 下一个知识点:10.4 标准输入输出