Por que o recvmsg não aceita o MSG_CTRUNC como sinalizador?

1

de acordo com man 2 recv recvmsg pode devolver MSG_TRUNC

   MSG_TRUNC
          indicates that the trailing portion of a datagram was dis‐
          carded because the datagram was larger than the buffer sup‐
          plied.

porque às vezes queremos saber o tamanho do buffer que precisaríamos alocar MSG_TRUNC também pode ser usado como um parâmetro no campo flags

   MSG_TRUNC (since Linux 2.2)
          For raw (AF_PACKET), Internet datagram (since Linux
          2.4.27/2.6.8), netlink (since Linux 2.6.22), and UNIX datagram
          (since Linux 3.4) sockets: return the real length of the
          packet or datagram, even when it was longer than the passed
          buffer.

a documentação também indica recvmsg também pode retornar MSG_CTRUNC

   MSG_CTRUNC
          indicates that some control data were discarded due to lack of
          space in the buffer for ancillary data.

e ainda não há como obter a extensão real dos dados auxiliares. não deveria aceitar MSG_CTRUNC para que possamos obter o tamanho real dos dados auxiliares?

    
por user3076936 25.02.2018 / 09:35

0 respostas