@guochy2012
2014-06-03T02:59:01.000000Z
字数 542
阅读 1567
未分类
在此输入正文
ssize_t readn(int fd, void *buf, size_t count) {size_t nleft;size_t nread;char *ptr;ptr = buf;nleft = count;while (nleft > 0) {nread = read(fd, ptr, nleft);if (nread < 0) {if (errno == EINTR) {nread = 0;} else {return -1;}} else if (nread == 0) {break;}nleft -= nread;ptr += nread;}return count - nleft;}ssize_t writen(int fd, const void *buf, size_t count) {size_t nleft;size_t nwritten;const char *ptr;ptr = buf;nleft = count;while (nleft > 0) {nwritten = write(fd, ptr, nleft);if (nwritten <= 0) {if (nwritten < 0 && nwritten == EINTR) {nwritten = 0;} else {return -1;}}nleft -= nwritten;ptr += nwritten;}return count;}