首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用命令行参数启动erlang可以,而使用args_file则不行

使用命令行参数启动erlang可以,而使用args_file则不行
EN

Stack Overflow用户
提问于 2013-03-06 03:51:49
回答 1查看 1.2K关注 0票数 1

我按照令人惊叹的“如何在10分钟内用erlang创建HTTP API”用Erlang构建了一个非常简单的小OTP应用程序:

https://vimeo.com/59832641

当我使用视频中演示的命令行参数启动erl时,它工作得很好。但是,如果我尝试使用-args_file参数启动erl,应用程序就不会启动。

args_file非常简单;它只有一行,如下所示:

代码语言:javascript
复制
-pa deps/*/ebin ebin -s fancyapi_app

...and下面是我尝试运行erlang时得到的错误报告:

代码语言:javascript
复制
=INFO REPORT==== 5-Mar-2013::19:32:59 ===
application: fancyapi
exited: {shutdown,{fancyapi_app,start,[normal,[]]}}
type: temporary

有什么想法吗?除了使用常规的命令行参数之外,args_file FileName还会导致更多的事情发生吗?文档位于:

http://www.erlang.org/doc/man/erl.html

此外,我知道该命令在一定程度上是有效的,因为如果我向文本文件添加内容,比如-sname node,erl提示符会显示(node@localhost)1>

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-03-06 05:26:02

使用-emu_args标志,它将显示发送到仿真器的确切参数。下面是一个简单的示例:

代码语言:javascript
复制
$ cat test.args 
-emu_args
-pa deps/*/ebin
-pa ebin
-name test@localhost

现在,我将手动传递所有这些参数:

代码语言:javascript
复制
$ erl -emu_args -pa deps/*/ebin -pa ebin -name test@localhost
Executing: /Users/abhinavsingh/Builds/R15B03/lib/erlang/erts-5.9.3.1/bin/beam.smp /Users/abhinavsingh/Builds/R15B03/lib/erlang/erts-5.9.3.1/bin/beam.smp -- -root /Users/abhinavsingh/Builds/R15B03/lib/erlang -progname erl -- -home /Users/abhinavsingh -- -pa deps/cowboy/ebin deps/jsx/ebin deps/lager/ebin deps/mimetypes/ebin deps/ranch/ebin -pa ebin -name test@localhost

Erlang R15B03 (erts-5.9.3.1) [source] [smp:8:8] [async-threads:0] [hipe] [kernel-poll:false]

Eshell V5.9.3.1  (abort with ^G)
(test@localhost)1> 

下一步,通过args文件:

代码语言:javascript
复制
$ erl -args_file test.args 
Executing: /Users/abhinavsingh/Builds/R15B03/lib/erlang/erts-5.9.3.1/bin/beam.smp /Users/abhinavsingh/Builds/R15B03/lib/erlang/erts-5.9.3.1/bin/beam.smp -- -root /Users/abhinavsingh/Builds/R15B03/lib/erlang -progname erl -- -home /Users/abhinavsingh -- -pa deps/*/ebin -pa ebin -name test@localhost

Erlang R15B03 (erts-5.9.3.1) [source] [smp:8:8] [async-threads:0] [hipe] [kernel-poll:false]

Eshell V5.9.3.1  (abort with ^G)
(test@localhost)1> 

正如你所看到的,两者真的不一样。具体地说,在手动完成所有这些操作时,-pa deps/*/ebin将扩展为-pa deps/cowboy/ebin deps/jsx/ebin ...,但是当您通过args文件传递它时,同样的情况不会很好地进行。因此,某些模块不在您的代码路径中,因此应用程序无法启动。

票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/15232836

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档