2016-10-21 3 views
0

Problem: Ich versuche, den Befehl noshell wie folgt auszuführen und den Server auf Port 6657 am Leben zu erhalten, aber scheint, dass das nicht funktioniert.Erlang Server auf Port 6657?

run_server.sh

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

Erlang Modulfunktion

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

FYI, auf erlang Prompt kann ich Befehl ausführen - server:main(6667) , die gut funktioniert.

Können Sie mir bitte vorschlagen, was ich in diesem Befehl ändern muss?

Vielen Dank!

Antwort

1

Vorausgesetzt, dass Sie den Namen des Moduls Recht haben (Sie sagen server im ersten Schnipsel und chat_server später), das Problem höchstwahrscheinlich ist, dass -s module function arg1 [...] die Argumente als Liste von Atomen sendet, während Ihr Code eine einzelne ganze Zahl erfordert (wie Sie sagte server:main(6657) funktioniert).

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„Server: main (Sie können -eval statt -s verwenden 6657) "-s init stop" stürzt ab ** - rufe Mod [Func [Arg1, Arg2, ...]] auf (init flag) ** – kevin

+1

Ups, ich habe einen Tippfehler gemacht. Das sollte "-eval", nicht "-run" sein. Bitte siehe Bearbeiten. – Dogbert

+0

Ich kann diesen Befehl '' 'erl -pa ebin/-noshell -eval" server: main (6657) "-s init stop''' ohne Absturz ausführen, aber der Server läuft nicht die ganze Zeit. Wie kann ich den Server auf Port 6656 weiter betreiben? Danke @Dogbert und @kevin – J4cK