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:

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

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

questionAnswers(4)

yourAnswerToTheQuestion