Czy istnieje polecenie podobne do mkfifo, ale dotyczy gniazd domeny?
Czy istnieje polecenie podobne do mkfifo, ale dotyczy gniazd domeny?
Odpowiedzi:
Nie ma dokładnego odpowiednika mkfifo dla gniazda, tzn. Nie ma polecenia, które po prostu tworzy „wiszące” gniazdo. Wynika to z przyczyn historycznych: funkcja serwera bind (), która tworzy nazwę gniazda / i-węzeł w systemie plików, kończy się niepowodzeniem, jeśli nazwa jest już używana. Innymi słowy, serwer nie może działać na istniejącym gnieździe.
Więc jeśli wcześniej utworzyłeś gniazdo, musiałoby to zostać najpierw usunięte przez serwer. Żadnych korzyści. Jak widać z odpowiedzią Gregory'ego, możesz utworzyć gniazdo JEŻELI trzymasz do tego serwer, na przykład netcat. Gdy serwer zniknie, stare gniazdo zniknie. Nowy serwer ma nowe gniazdo i wszyscy klienci muszą połączyć się ponownie, mimo że nazwa gniazda jest identyczna.
Najnowsze netcat (nc) i podobne programy (o ile mi wiadomo) mają opcje gniazd domeny.
W przeciwnym razie możesz rzucić okiem na ucspi-unix
# sudo apt-get install netcat-openbsd
Możesz użyć Pythona:
python -c "import socket as s; sock = s.socket(s.AF_UNIX); sock.bind('/tmp/test.sock')"
Również C, patrz ta odpowiedź .
mksock() { SOCK="$1" python -c "import os, socket as s; s.socket(s.AF_UNIX).bind(os.environ['SOCK'])"; }
dla łatwego użycia powłoki: mksock /tmp/test.sock
netcat
W takim przypadku po prostu używam i słucham:
nc -lkU aSocket.sock
powinieneś użyć netcat-openbsd . netcat-traditional nie ma -U
przełącznika, który jest przeznaczony dla gniazda domeny Unix.
nc
BSD.