我有 erlang 应用程序:*.app 文件和一些 *.erl 文件。我把它们全部编译出来。在终端中,我启动 erl 并出现 application:start(my_application).
,一切正常,但如果我关闭终端应用程序,也会关闭。如何在不依赖终端的情况下运行应用程序?
谢谢。
最佳答案
您可能希望对 erl
使用 -noshell
选项。语法是
erl -noshell -s Module Function Arguments
所以在你的情况下,这可能是
erl -noshell -s application start my_application
这应该允许您(例如,如果您在 Unix/Linux 上)将应用程序作为后台进程启动并保持运行。
一个有用的变体是还调用 init
模块的 stop/0
函数,以便 Erlang 环境在完成运行您的函数后停止。如果您想运行一个简单的一次性函数并将输出通过管道传输到其他进程,这会派上用场。
例如,要通过管道传输到more
,您可以这样做
erl -noshell -s mymodule myfunction -s init stop | more
最后,如果适合您的情况,您还可以使用 escript
命令将 Erlang 代码作为脚本运行,而不是编译代码。
希望有帮助。
关于erlang - 运行 erlang 应用程序,无需依赖终端,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5269300/