Самый простой способ сообщить локальному узлу erlang из команда оболочки

Я использую распределенную систему 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.

5
задан Peer Stritzinger 4 February 2011 в 17:28
поделиться