Czy istnieje bardziej przejrzysty sposób niezawodnego użycia funkcji write ()?

Czytamman stron, a moje zrozumienie jest takie, jeśliwrite() kończy się niepowodzeniem i ustawiaerrno doEAGAIN lubEINTR, Mogę wykonaćwrite() ponownie, więc wymyśliłem następujący kod:

  ret = 0;
  while(ret != count) {
    write_count = write(connFD, (char *)buf + ret,  count);
    while (write_count < 0) {
      switch(errno) {
        case EINTR:
        case EAGAIN:
          write_count = write(connFD, (char *)buf + ret,  count -ret);
          break;
        default:
          printf("\n The value of ret is : %d\n", ret);
          printf("\n The error number is : %d\n", errno);      
          ASSERT(0);
      }
    }
    ret += write_count;
  }

Występujęread()&nbsp;iwrite()&nbsp;na gniazdach i obsługaread()&nbsp;podobnie jak powyżej. Używam Linuksa, zgcc&nbsp;kompilator.