[关闭]
@guochy2012 2014-06-03T02:59:01.000000Z 字数 542 阅读 1567

readn

未分类


在此输入正文

  1. ssize_t readn(int fd, void *buf, size_t count) {
  2. size_t nleft;
  3. size_t nread;
  4. char *ptr;
  5. ptr = buf;
  6. nleft = count;
  7. while (nleft > 0) {
  8. nread = read(fd, ptr, nleft);
  9. if (nread < 0) {
  10. if (errno == EINTR) {
  11. nread = 0;
  12. } else {
  13. return -1;
  14. }
  15. } else if (nread == 0) {
  16. break;
  17. }
  18. nleft -= nread;
  19. ptr += nread;
  20. }
  21. return count - nleft;
  22. }
  23. ssize_t writen(int fd, const void *buf, size_t count) {
  24. size_t nleft;
  25. size_t nwritten;
  26. const char *ptr;
  27. ptr = buf;
  28. nleft = count;
  29. while (nleft > 0) {
  30. nwritten = write(fd, ptr, nleft);
  31. if (nwritten <= 0) {
  32. if (nwritten < 0 && nwritten == EINTR) {
  33. nwritten = 0;
  34. } else {
  35. return -1;
  36. }
  37. }
  38. nleft -= nwritten;
  39. ptr += nwritten;
  40. }
  41. return count;
  42. }
添加新批注
在作者公开此批注前,只有你和作者可见。
回复批注