如何构建一个Elixir escript,它不会在执行后停止Erlang VM(如elixir --no-halt)

Szy*_*Jeż 4 erlang elixir erlang-escript

我有一个启动应用程序的程序,然后将(子)工作者添加到主管.显然,在做了之后,它就没有什么可做的了,它就会停止(退出).因此,让它不停止VM将允许工作人员工作.

我提出的唯一解决方案是添加:

IO.gets "Working... To finish hit <Enter>."
Run Code Online (Sandbox Code Playgroud)

在末尾...

我希望escript在运行之后构建一个不会像以下那样停止Erlang VM:

elixir --no-halt -S mix run --eval 'MyApp.CLI.m
ain(["some-arg"])'
Run Code Online (Sandbox Code Playgroud)

要么

mix run --no-halt --eval 'MyApp.CLI.m
ain(["some-arg1,some-arg2"])'
Run Code Online (Sandbox Code Playgroud)

有没有办法用escript做到这一点?

或者我应该使用不同的解决方案来打包和分发我的程序,实际上更像是服务器/守护程序而不是命令行工具?

sas*_*ric 6

包装此类系统的典型方法是OTP版本.你可以使用exrm.

如果由于某些原因,您仍然想使用escript,则可以:timer.sleep(:infinity)在启动所有应用程序和进程后调用.