Gibt es einen Befehl ähnlich wie mkfifo, aber für Domain-Sockets?
Es gibt kein genaues Äquivalent zu mkfifo für Socket, dh es gibt keinen Befehl, der nur einen "hängenden" Socket erzeugt. Dies hat historische Gründe: Die Serverfunktion bind (), die einen Socket-Namen / Inode im Dateisystem erstellt, schlägt fehl, wenn der Name bereits verwendet wird. Mit anderen Worten, der Server kann nicht mit einem bereits vorhandenen Socket arbeiten.
Wenn Sie also früher einen Socket erstellt hätten, müsste dieser ohnehin zuerst vom Server entfernt werden. Kein Vorteil. Wie Sie anhand der Antwort von Gregory sehen, können Sie einen Socket erstellen, wenn Sie einen Server dafür haben, z. B. netcat. Sobald ein Server weg ist, ist der alte Socket weg. Ein neuer Server hat einen neuen Socket, und alle Clients müssen erneut eine Verbindung herstellen, obwohl der Name des Sockets identisch ist.
Die neuesten Netcat- (nc) und ähnlichen Programme (so weit ich weiß socat) haben Domain-Socket-Optionen.
Ansonsten können Sie sich ucspi-unix ansehen
nc
BSD.# sudo apt-get install netcat-openbsd
Sie können Python verwenden:
Siehe auch C diese Antwort .
quelle
mksock() { SOCK="$1" python -c "import os, socket as s; s.socket(s.AF_UNIX).bind(os.environ['SOCK'])"; }
für einfache Shell-Nutzung:mksock /tmp/test.sock
Ich benutze
netcat
und höre in einem solchen Fall einfach weiter :du solltest netcat-openbsd verwenden . netcat-traditional hat keinen
-U
Switch für Unix Domain Sockets.quelle