Erlang:从命令行调用 erl -eval 永远不会退出

标签 erlang erlang-shell erl

我有一个简单的 Erlang 命令,我想通过 erl -eval 调用(编译 erlydtl 模板,如 erlydtl page 中所述)。

当我从 shell 交互执行时,一切正常,命令立即退出:

erl -pa ebin deps\erlydtl\ebin Eshell V5.9.3.1  (abort with ^G) 
1> erlydtl:compile('templates/tictactoe.dtl',tictactoe_dtl,[{out_dir,'ebin'}]).
ok

但是当我尝试通过 erl -eval 执行此操作时(我想从 .bat 文件运行它):

erl -pa ebin deps\erlydtl\ebin -noshell -eval erlydtl:compile('templates/tictactoe.dtl',tictactoe_dtl,[{out_dir,'ebin'}])

然后命令完成它的工作(模板已编译)但它不会退出,我需要使用 ctrl+c 手动终止 shell 进程(我在 Windows 下工作)。

我只想要命令编译模板并退出。可能是什么问题?

更新:

一个解决方案可能是在命令末尾附加 exit() 调用,但我最终得到以下结果:

erl -pa ebin deps\erlydtl\ebin -noshell -eval erlydtl:compile('templates/tictactoe.dtl',tictactoe_dtl,[{out_dir,'ebin'}]),exit(success).
{"init terminating in do_boot",success}

Crash dump was written to: erl_crash.dump
init terminating in do_boot (success)

错误信息很烦人,所以我还是不喜欢这个解决方案。

最佳答案

这应该可以解决问题

erl -noshell -eval 'c:ls()' -eval 'init:stop()'

您必须告诉虚拟机关闭。

关于Erlang:从命令行调用 erl -eval 永远不会退出,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16871832/

相关文章:

include - Erlang:无法包含 header

erlang - 在 erlang 中采用 gen_server 架构有困难

autocomplete - erl 不会自动完成使用 -pa 加载的代码

erlang - Erlang仿真器信息语句是什么意思?

linux - Erlang,process_flag trap_exit 从 CLI 杀死了我的 gen_server

erlang - ERLANG ODBC 是否支持连接池?

erlang - 如何在 Erlang/Elixir 中动态定义函数

Erlang - 产生进程和传递参数

list - 列表中的数字打印为 "\f"

macos - 让两个 erl shell 在 OS X 上交谈