[英]How can I build an Elixir escript that does not halt the Erlang VM after execution (like elixir --no-halt)
我有一個啟動應用程序的程序,然后將(子)工作者添加到主管。 顯然,在做了之后,它就沒有什么可做的了,它就會停止(退出)。 因此,讓它不停止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)
。
注意 :從Elixir 1.9開始
我們可以使用System.no_halt(true)
來允許腳本永不停止。
這是一個簡單的腳本示例:
defmodule Mix.Tasks.NoHalt do
use Mix.Task
def run(_) do
System.no_halt(true)
IO.puts("Never die!")
end
end
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.