Esiste un comando simile a mkfifo ma per i socket di dominio?
Esiste un comando simile a mkfifo ma per i socket di dominio?
Risposte:
Non esiste un equivalente esatto di mkfifo per socket, ovvero non esiste alcun comando che crea semplicemente un socket "sospeso". Questo per ragioni storiche: la funzione server bind (), quella che crea un nome socket / inode nel filesystem, fallisce se il nome è già usato. In altre parole, il server non può funzionare su un socket preesistente.
Pertanto, se si fosse creato un socket in precedenza, sarebbe comunque necessario rimuoverlo prima dal server. Nessun beneficio. Come vedi con la risposta di Gregory, puoi creare un socket SE tieni un server per esso, come netcat. Una volta che un server è sparito, il vecchio socket è sparito. Un nuovo server ha un nuovo socket e tutti i client devono riconnettersi, nonostante il nome del socket sia identico.
I più recenti netcat (nc) e programmi simili (socat per quanto ne so) hanno opzioni socket di dominio.
Altrimenti, puoi dare un'occhiata a ucspi-unix
# sudo apt-get install netcat-openbsd
Puoi usare Python:
python -c "import socket as s; sock = s.socket(s.AF_UNIX); sock.bind('/tmp/test.sock')"
Anche C, vedi questa risposta .
mksock() { SOCK="$1" python -c "import os, socket as s; s.socket(s.AF_UNIX).bind(os.environ['SOCK'])"; }
per un facile utilizzo della shell: mksock /tmp/test.sock
Uso semplicemente netcat
e rimango in ascolto in questo caso:
nc -lkU aSocket.sock
dovresti usare netcat-openbsd . netcat-tradizionale non ha -U
switch che è per il socket del dominio Unix.
nc
su BSD.