0

问题: 我正在尝试按以下方式运行 noshell 命令并使服务器在端口 6657 上保持活动状态,但似乎不起作用。

运行服务器.sh

erl -make
erl -pa ebin/ -noshell -s server main 6657 -s init stop

Erlang 模块函数

main(Port) ->
    controller:start(),

仅供参考,在 erlang 提示符下我可以执行命令 -server:main(6667) 效果很好。

您能否建议我在该命令中需要更改什么?

谢谢 !

4

1 回答 1

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
于 2016-10-21T20:46:58.247 回答