2016-10-21 59 views
0

问题: 我试图运行下面的noshell命令,并保持端口6657上的服务器活着,但似乎不起作用。端口6657上的erlang服务器?

run_server.sh

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

二郎模块功能

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

仅供参考,在二郎提示我可以执行的命令 - server:main(6667) 工作正常。

你能给我建议我需要改变那个命令吗?

谢谢你!

回答

1

假设你有模块名称权(你说的第一个片段serverchat_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 
+1

http://erlang.org/doc/man/erl.html 'ERL-PA EBIN/-noshell -RUN“服务器:主( 6657)“-s init stop”会崩溃 ** - 运行Mod [Func [Arg1,Arg2,...]](init标志)** – kevin

+1

糟糕,我在那里犯了一个错字。这应该是'-eval',而不是'-run'。请参阅编辑。 – Dogbert

+0

我可以执行这个命令'''erl -pa ebin/-noshell -eval“server:main(6657)”-s init stop'''没有崩溃,但服务器并没有一直运行。我如何继续在端口6656上运行服务器?谢谢@Dogbert和@kevin – J4cK