Linux的read和write函数
这两个函数都是unbuffered的,也就是直接写入的。
读文件:
函数原型:
read函数尝试从fd所指的文件处读出count数量的字节,然后存到buf所指的缓冲区里。
如果count=0,read()返回0并且不做其他事。如果count比SSIZE_MAX要大,结果是无法预料的。
如果读取成功,read()返回读出的字节数,如果遇到EOF,那么返回0。
当遇到错误的时候,返回-1,以下是相应的错误码说明
EAGAIN | 没看明白 |
EWOULDBLOCK | 会被阻塞 |
EBADF | fd不是一个打开的文件描述符 |
EFAULT | buf不在能读取的内存里 |
EINTR | 读取文件之前被中断 |
EINVAL | 挺复杂的,以后再看 |
EIO | IO错误 |
EISDIR | fd是一个目录 |
原型:
其他都差不多,需要说明的是:
read 的返回值和count不一致的时候一般认为是到达文件末尾,而write则认为出现错误。
所以一般用read和write的时候都是这么写的:
转载请注明来源:http://www.tianwaihome.com/2012/04/linux-read-write.html。