Existe uma maneira mais limpa de usar a função write () de forma confiável?

Eu li oman páginas, e meu entendimento é que, sewrite() falha e define oerrno paraEAGAIN ouEINTR, Eu posso executar owrite() novamente, então eu criei o seguinte código:

  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;
  }

Estou realizandoread()&nbsp;ewrite()&nbsp;em soquetes e manuseio doread()&nbsp;similarmente como acima. Eu estou usando o Linux, comgcc&nbsp;compilador.