Crea un socket con nome Unix dalla riga di comando


Risposte:


21

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.



8

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
Tino

0

Uso semplicemente netcate rimango in ascolto in questo caso:

nc -lkU aSocket.sock

dovresti usare netcat-openbsd . netcat-tradizionale non ha -Uswitch che è per il socket del dominio Unix.


-k Impone a nc di rimanere in ascolto per un'altra connessione una volta completata la connessione corrente. È un errore usare questa opzione senza l'opzione -l. -U Specifica di utilizzare socket di dominio UNIX.
Johan Boulé,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.