Я использую распределенную систему erlang с одним узлом на машину.
Поскольку DNS недоступен, я запускаю их с одним и тем же параметром -sname
, например
erl -sname foo ...
Демон операционной системы имеет возможность выполнять команды оболочки ( / bin / sh
), когда происходит определенное событие (когда USB-накопитель вставляется в систему).
Я ищу простой способ вызвать функцию на локальном узле erlang на этом компьютере с помощью этой команды оболочки (дальнейшие действия после обнаружения и подключения USB-накопителя).
Я думал о вызове erl -sname bar
из оболочки и запустите некоторый код, который выглядит как
[_,Host] = string:tokens(atom_to_list(node()), "@"),
The_node = list_to_atom("foo@" ++ Host),
spawn(The_node, My_fun),
. Это правильный путь? Или запускается полный перебор нового узла erlang (хотя это будет происходить не часто)
Или лучше поговорить о сокете, открытом gen_tcp, или прочитать именованный канал.
Или любые другие предложения?
] Кстати, это работает в системе Unix.