Відповіді:
Немає точного еквівалента mkfifo для socket, тобто немає команди, яка просто створює "висячий" сокет. Це з історичної причини: функція сервера bind (), яка створює ім'я сокета / inode у файловій системі, відмовляється, якщо ім'я вже використано. Іншими словами, сервер не може працювати на раніше існуючому сокеті.
Отже, якщо ви створили сокет раніше, його потрібно все-таки видалити сервером. Ніякої вигоди. Як ви бачите з відповіддю Грегорі, ви можете створити сокет, якщо ви будете зберігати для нього сервер, такий як netcat. Як тільки сервер відсутній, старий сокет зник. На новому сервері є новий сокет, і всі клієнти повинні знову підключитися, незважаючи на те, що назва сокета однакова.
Більшість останніх netcat (nc) та подібних програм (наскільки я знаю) socat мають варіанти сокетів домену.
Інше, ви можете подивитися на ucspi-unix
# sudo apt-get install netcat-openbsd
Ви можете використовувати python:
python -c "import socket as s; sock = s.socket(s.AF_UNIX); sock.bind('/tmp/test.sock')"
Також С, дивіться цю відповідь .
mksock() { SOCK="$1" python -c "import os, socket as s; s.socket(s.AF_UNIX).bind(os.environ['SOCK'])"; }
для зручного використання оболонок: mksock /tmp/test.sock
Я просто використовую netcat
та слухаю в такому випадку:
nc -lkU aSocket.sock
ви повинні використовувати netcat-openbsd . netcat-tradicional не має -U
комутатора, який призначений для сокета Unix Domain.
nc
BSD.