Unix—read & write

  • Post author:
  • Post category:其他



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)。









版权声明:本文为qq_32792075原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。