2013-04-30 4 views
7

J'ai une application erlang, compilée avec des barres d'armature.démarrer erlang application à partir de la ligne de commande

Normalement, je commence avec comme ceci:

application:start(myapp). 

à l'intérieur de la coque ERL.

Quelqu'un pourrait-il me dire comment le démarrer comme un programme de ligne de commande normal?

+2

Certaines des réponses à [cette question] (http://stackoverflow.com/q/ 7032665/113848) pourrait aider. – legoscia

Répondre

14

Vous pouvez faire:

erl -pa ebin -eval "application:start(myapp)" 

Si vous souhaitez l'exécuter en arrière-plan, ajouter -noshell -detached

+0

Dans mes codes, j'ai 'application: get_env()' dans la fonction start et j'ai l'erreur {badmatch, undefined} retournée en utilisant l'application -eval ": start (myapp)". Y a-t-il un autre chemin de bibliothèque que je devrais inclure comme '-pa'? – VincentHuang

+0

Oh, je réponds à ma question personnelle ci-dessus. Si vous voulez obtenir une variable d'environnement qui est définie dans 'etc/app.confg', n'oubliez pas de l'inclure en utilisant '-config etc/app.config'. – VincentHuang

5

Créer script shell, quelque chose comme ça:

exec erl -pa ebin/ deps/*/ebin -s myapp 

Autres options dont vous avez besoin voir http://www.erlang.org/doc/man/erl.html.

+0

{"init se terminant par do_boot", {undef, [{cc, début, [], []}, {init, début_it, 1, []}, {init, start_em, 1, []}]}} – LtWorf

+1

pour que 'erl -s myapp' fonctionne, vous devez écrire une fonction dans votre application myapp.erl en tant qu'application start() ->: start (myapp) .' -s est d'appeler le MFA. Par défaut, il appelle start sans passer les paramètres si seul le nom du module est spécifié. – Vinod

Questions connexes