Есть ли команда, похожая на mkfifo, но для доменных сокетов?
Для сокета нет точного эквивалента mkfifo, то есть нет команды, которая просто создает «зависший» сокет. Это по исторической причине: серверная функция bind (), которая создает имя / индекс сокета в файловой системе, завершается ошибкой, если имя уже используется. Другими словами, сервер не может работать с уже существующим сокетом.
Так что, если вы создали сокет ранее, он все равно сначала должен быть удален сервером. Нет пользы. Как видно из ответа Грегори, вы можете создать сокет, ЕСЛИ у вас есть для него сервер, например netcat. Как только сервер исчез, старый сокет исчез. Новый сервер имеет новый сокет, и все клиенты должны повторно подключиться, несмотря на то, что имя сокета идентично.
В большинстве последних программ netcat (nc) и аналогичных (насколько я знаю, socat) есть опции сокетов доменов.
Иначе, вы можете взглянуть на ucspi-unix
nc
на BSD.# sudo apt-get install netcat-openbsd
Вы можете использовать Python:
Также С, смотрите этот ответ .
источник
mksock() { SOCK="$1" python -c "import os, socket as s; s.socket(s.AF_UNIX).bind(os.environ['SOCK'])"; }
для легкого использования оболочки:mksock /tmp/test.sock
Я просто использую
netcat
и продолжаю слушать в таком случае:Вы должны использовать netcat-openbsd . У netcat-Traditional нет
-U
переключателя, который предназначен для сокета Unix Domain.источник