Я использую распределенную систему erlang с одним узлом на машину.
Поскольку DNS недоступен, я все запускаю их с одинаковым параметром -sname
, например
erl -sname foo ...
AДемон операционной системы имеет функцию для выполнения команд оболочки (/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.