Existe um comando semelhante ao mkfifo, mas para soquetes de domínio?
Existe um comando semelhante ao mkfifo, mas para soquetes de domínio?
Respostas:
Não existe um equivalente exato de mkfifo para socket, ou seja, não há comando que apenas crie um socket "pendurado". Isso ocorre por um motivo histórico: a função do servidor bind (), que cria um nome / inode de soquete no sistema de arquivos, falha se o nome já estiver sendo usado. Em outras palavras, o servidor não pode operar em um soquete pré-existente.
Portanto, se você criou o soquete anteriormente, ele precisaria ser removido pelo servidor primeiro. Nenhum benefício. Como você vê na resposta de Gregory, você pode criar um soquete se mantiver um servidor para ele, como o netcat. Uma vez que um servidor se foi, o soquete antigo se foi. Um novo servidor possui um novo soquete e todos os clientes precisam se reconectar, apesar do nome do soquete ser idêntico.
Os programas mais recentes do netcat (nc) e similares (socat até onde eu sei) têm opções de soquete de domínio.
Senão, você pode dar uma olhada no ucspi-unix
# sudo apt-get install netcat-openbsd
Você pode usar python:
python -c "import socket as s; sock = s.socket(s.AF_UNIX); sock.bind('/tmp/test.sock')"
Também C, veja esta resposta .
mksock() { SOCK="$1" python -c "import os, socket as s; s.socket(s.AF_UNIX).bind(os.environ['SOCK'])"; }
para uso fácil do shell: mksock /tmp/test.sock
Eu simplesmente uso netcat
e fico ouvindo nesse caso:
nc -lkU aSocket.sock
você deve usar o netcat-openbsd . O netcat-traditional não possui um -U
switch que seja para o soquete do domínio Unix.
nc
BSD.