Ответ для моего случая
Это не будет каноническим и полным ответом, потому что я не очень знаком с сокетами.Однако я отправил Джо письмо по ссылке выше, и он сказал:
Насколько я понимаю, отображение типа сокета unix на erlang отображается следующим образом:
SOCK_STREAM -> gen_tcp
SOCK_DGRAM -> gen_udp
SOCK_SEQPACKET -> gen_sctp
Он предложил использовать gen_tcp:connect
в моем случае, и это сработало!Очевидно, mpv создал сокет SOCK_STREAM
.
Итак, запустив mpv
как:
mpv /Users/me/playlist.m3u --input-ipc-server=/tmp/mpv.sock --idle yes --no-audio-display
... так, что он ожидает команды на сокете /tmp/mpv.sock
, яможет послать ему команду «воспроизвести другой плейлист», как это в erl
:
{ok, Port} = gen_tcp:connect({local, "/tmp/mpv.sock"}, 0, [local]).
Msg = "{ \"command\": [\"loadlist\", \"/Users/me/playlist2.m3u\", \"replace\"] }\n".
gen_tcp:send(Port, Msg).