10.3 读和写文件
read函数
ssize_t read(int fd, void *buf, size_t count);
read函数从描述符fd的当前位置拷贝最多n个字节到存储器位置buf
- 返回-1 表示错误
- 返回 0 表示EOF 注意这里不是返回EOF
- 返回正整型 表示实际传送的字节数量
write函数
ssize_t write(int fd, const void *buf, size_t count);
write函数与read相反,是从存储器位置buf中拷贝count个字节到描述符fd的当前文件位置
ssize_t 和 size_t的区别
- ssize_t 为int 有符号
- size_t 为unsigned int 无符号
读和写返回不足值的情况
在某些情况下,write和read返回的字节比传入的字节数少,出现这种有以下原因:
- 读文件时遇到EOF 文件剩余的字节数不够读满一次,返回0表示遇到EOF
- 从终端读文本行 返回的是文本行的大小
- 读和写网络套接字
引起read和write返回不足的因素有几个: 缓冲区大小,网络延迟等
网络I/O的处理以后重点讲