Linux/Unix的文件读写函数write和read
头文件为<unistd.h>
ssize
_
t read(int fd, void *buf, size
_
t size) ;
若成功则返回读的字节数,若EOF则为0,若出错则为-1。
size
_
t write(int fd, void *buf, size
_
t size) ;
若成功则返回写的字节数,若出错则为-1。
read函数从描述符fd的当前文件位置拷贝最多n个字节到存储器位置buf。
write函数从存储器位置buf拷贝至多n个字节到文件描述符fd的当前文件位置。
在调用read和write函数时可能会遇到不足值的情况,EOF(end of file)就可能是一种情况,
如一个文件从当前位置开始只含有20个字节,但是一次却读了50个字节,就会造成不足值的情况。
再如从终端读取文本,read函数是按行操作,就会造成不足值。还有读和写网络套接字时,由于
网络的延迟或者是内部缓冲约束也会造成不足值的产生。
处理不足值的一个方法就是反复的调用read和write进行处理。
ssize_t 和 size_t有什么区别?
size_t为unsigned int (无符号) ;
size_t为int(有符号,需要返回-1)。