erlang сервер на порту 6657?
Проблема: я пытаюсь выполнить команду noshell следующим образом и сохранить сервер на порту 6657, но, похоже, это не работает.
run_server.sh
erl -make
erl -pa ebin/ -noshell -s server main 6657 -s init stop
Функция модуля Erlang
main(Port) ->
controller:start(),
К вашему сведению, по приглашению erlang я могу выполнить команду - server:main(6667)
это отлично работает
Подскажите, пожалуйста, что мне нужно изменить в этой команде?
Спасибо вам!
1 ответ
Предполагая, что у вас есть правильное имя модуля (вы говорите, server
в первом фрагменте и chat_server
позже), проблема, скорее всего, заключается в том, что -s module function arg1 [...]
отправляет аргументы в виде списка атомов, в то время как ваш код требует одного целого числа (как вы сказали server:main(6657)
работает). Ты можешь использовать -eval
вместо -s
:
erl -pa ebin/ -noshell -eval "server:main(6657)" -s init stop
$ cat a.erl
-module(a).
-compile(export_all).
main(Port) ->
io:format("~p~n", [Port]).
$ erlc a.erl
$ erl -noshell -pa . -s a main 6657 -s init stop
['6657']
$ erl -noshell -pa . -eval 'a:main(6657)' -s init stop
6657