Eu não acredito que seja assim que os soquetes funcionam. Você continua lendo até que esteja vazio, o tamanho não é comunicado através do soquete, e não é do meu conhecimento exibido em qualquer lugar no soquete que é criado no sistema de arquivos /tmp/tmux-1000/default
.
trecho
Unix Socket FAQ - 2. Questions regarding both Clients and Servers (TCP/SOCK_STREAM)
I don't think that write() can legitimately return 0. read() should return 0 on receipt of a FIN from the peer, and on all following calls.
So yes, you must expect read() to return 0.
Fonte: Perguntas freqüentes sobre o soquete do Unix
Além disso, se você observar como a leitura de um soquete é feita com frequência, você estará basicamente em um loop while (true)
, lendo continuamente até que a conexão seja encerrada explicitamente. Você não tem como saber quantos dados estão pendentes no soquete.
trecho
while ( true )
{
unsigned char packet_data[256];
unsigned int maximum_packet_size = sizeof( packet_data );
...
Fonte: ENVIANDO E RECEBENDO PACOTES
Então, para responder à sua pergunta, a única maneira de saber quantos dados estão no soquete é ler tudo!