erlang - 如何构建一个在执行后不会停止 Erlang VM 的 Elixir 脚本(如 elixir --no-halt)

标签 erlang elixir erlang-escript

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

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

IO.gets "Working... To finish hit <Enter>."

在末尾...

我想建立一个 escript运行后不会停止 Erlang VM,就像:
elixir --no-halt -S mix run --eval 'MyApp.CLI.m
ain(["some-arg"])'

或者
mix run --no-halt --eval 'MyApp.CLI.m
ain(["some-arg1,some-arg2"])'

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

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

最佳答案

打包此类系统的典型方法是 OTP 版本。您可以使用exrm为了那个原因。

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

关于erlang - 如何构建一个在执行后不会停止 Erlang VM 的 Elixir 脚本(如 elixir --no-halt),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30073563/

相关文章:

Elixir 如何一次迭代两个列表以生成一个新列表?

c++ - 在 gen_tcp 中使用 {packet, N} 以及如何在 C++ 程序中接收数据

javascript - 如何在 Elixir 中编写多事件驱动的 if 子句?

erlang - Elixir GenServer 教程中的计时错误?

erlang - 将列表列表转换为元组列表的最佳方法?

erlang - 脚本 : setting code path relative to script directory

erlang - 使用 SSL 分发运行 Erlang Escript 文件

objective-c - Erlang 作为应用程序中的嵌入式系统?

Erlang - 根据值将列表拆分为列表

erlang - 如何将有向图传递给不同的进程和节点?