您的位置:首页 > 运维架构 > Linux

Linux c 源码(readn:从fd中读取n字节数据)

2015-09-08 11:15 501 查看
/* Read "n" bytes from a descriptor. */
readn(int fd, void *vptr, size_t n)
{
size_t  nleft;
ssize_t nread;
char    *ptr;

ptr = vptr;
nleft = n;
while (nleft > 0) {
if ( (nread = read(fd, ptr, nleft)) < 0) {
if (errno == EINTR)
nread = 0;      /* and call read() again */
else
return(-1);
} else if (nread == 0)
break;              /* EOF */

nleft -= nread;
ptr   += nread;
}
return(n - nleft);      /* return >= 0 */
}
/* end readn */

ssize_t
Readn(int fd, void *ptr, size_t nbytes)
{
ssize_t     n;

if ( (n = readn(fd, ptr, nbytes)) < 0)
err_sys("readn error");
return(n);
}


使用的时候使用函数Readn,Readn是个包裹函数,编程的时候就不需要对函数进行错误处理了。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: