Наконец-то я понял, что проблема возникла из-за использования aplay
вместо paplay
.
Я до сих пор не могу сказать, почему aplay
работает на хосте Debian, а не на целевом Linux, но, по крайней мере, вопрос закрыт.
Can we bind a Unix domain socket to any random existing file
Нет. Файл не должен существовать, иначе bind(2)
завершится ошибкой с EADDRINUSE
. bind(2)
создаст новый файл с путем, указанным в .sun_path
.
If no, how do you recognize a file that is used by a socket?
илиss
:
$ nc -Ul foo &
[3] 9268
$ ls -i./foo
1179674./foo
$ ss -elx | grep -w 1179674
u_str LISTEN 0 5 foo 618789 * 0 <-> ino:1179674 dev:0/2072 peers:
(вывод ss
выше был вручную обрезан от пробелов)
Опция -l
указывает ss
выбирать только прослушиваемые сокеты, опция -x
— только сокеты Unix, а опция -e
— печатать расширенную информацию в качестве номера инода, который я использовал для соответствия файл.
И ss
, и lsof
будут видеть сокеты только из текущего сетевого пространства имен ; но два сокета unix из разных сетевых пространств имен не могут быть привязаны к одному и тому же файлу.
Вы также можете проверить, совпадают ли номера устройств; но вы должны действовать осторожно, потому что sock_diag(7)
(, используемый ss
), вернет его в формате, используемом внутри ядра (MMMm mmmm
), но ошибочный ss
будет обрабатываться так, как если бы он был в пользовательской области mmmM MMmm
. формат; номер устройства в примере выше не 0/2072
, а8/24
(/dev/sdb8
);-)