Есть ли команда, аналогичная mkfifo, но для сокетов домена?
Не существует точного эквивалента mkfifo для сокета, то есть нет команды, которая просто создает «зависающий» сокет. Это по исторической причине: серверная функция bind (), которая создает имя сокета / индексный дескриптор в файловой системе, не работает, если это имя уже используется. Другими словами, сервер не может работать с уже существующим сокетом.
Так что, если вы создали сокет ранее, его все равно сначала нужно удалить сервером. Никакой пользы. Как видно из ответа Грегори, вы можете создать сокет, ЕСЛИ вы держите для него сервер, например netcat. Как только сервер уходит, старый сокет уходит. У нового сервера есть новый сокет, и всем клиентам необходимо повторно подключиться, несмотря на то, что имя сокета идентично.
Самые последние netcat (nc) и подобные программы (насколько мне известно, socat) имеют параметры сокета домена.
В противном случае вы можете посмотреть ucspi-unix
Вы можете использовать python:
python -c "import socket as s; sock = s.socket(s.AF_UNIX); sock.bind('/tmp/test.sock')"
Также C, см. этот ответ.
Я просто использую netcat
и продолжайте слушать в таком случае:
nc -lkU aSocket.sock
вы должны использовать netcat-openbsd. netcat-традиционный не имеет -U
переключатель, который предназначен для сокета домена Unix.