Considere /var/run/acpid.socket
. A qualquer momento eu posso me conectar a ele e me desconectar dele. Compare isso com nc
:
$ nc -l -U ./myunixsocket.sock
Ncat: bind to ./myunixsocket.sock: Address already in use. QUITTING.
nc
aparentemente permite apenas soquetes de uso único. A questão é então, como faço para criar um socket análogo ao /var/run/acpid.socket
, para uso múltiplo e reutilização ?
Você faz isso com a
-k
opção denc
.Exemplo:
É recomendado para
unlink()
o socket após o uso -- mas, na verdade, a maioria dos programas verifica se ele existe e remove-o antes de chamábind()
-lo; se o caminho do soquete existir no sistema de arquivos e você tentarbind()
fazê-lo, você receberá umEADDRINUSE
erro mesmo quando nenhum programa o estiver usando de forma alguma.Uma maneira de evitar toda essa bagunça no linux é usar soquetes unix "abstratos" , mas eles não parecem ser suportados pelo
netcat
.