我怎样才能安静地退出 Elixir?
How can I exit quietly from Elixir?
Process.exit(self, :normal)
完成了这项工作,但它打印出 ** (EXIT from #PID<0.49.0>) normal
。有没有办法在没有消息的情况下退出?
是的。但解决方案取决于您的流程是 运行 的代码(以及您看到消息打印的位置)。
如果该进程不使用 OTP 行为并且只是一个递归函数,您可以简单地从该函数中 return。您的递归函数只需要有一个函数不会再次调用自身的情况。像这样:
def recursive_function(:exit) do
:ok
def recursive_function(other_clause) do
...
如果您正在使用像 gen_server 这样的 OTP 行为,您需要做的就是停止 运行 下的那个应用程序。此 将 将消息打印到 IEx 控制台(我假设是您看到该消息的地方),但它不会将任何内容打印到 STDOUT,我认为这是您所关心的。
这取决于你是哪个应用运行。如果您正在构建脚本,则可以调用 System.halt(0)
。如果您有一个应用程序,请不要调用 System.halt(0)
,因为它会关闭整个系统而不考虑所有其他应用程序。而是使用 System.stop(0)
.
或者,您可以调用 exit(:shutdown)
退出当前进程。 :shutdown
是 OTP 退出的常见原因,如果您在 .exs
文件中,它也可以正常工作。
Process.exit(self, :normal)
完成了这项工作,但它打印出 ** (EXIT from #PID<0.49.0>) normal
。有没有办法在没有消息的情况下退出?
是的。但解决方案取决于您的流程是 运行 的代码(以及您看到消息打印的位置)。
如果该进程不使用 OTP 行为并且只是一个递归函数,您可以简单地从该函数中 return。您的递归函数只需要有一个函数不会再次调用自身的情况。像这样:
def recursive_function(:exit) do
:ok
def recursive_function(other_clause) do
...
如果您正在使用像 gen_server 这样的 OTP 行为,您需要做的就是停止 运行 下的那个应用程序。此 将 将消息打印到 IEx 控制台(我假设是您看到该消息的地方),但它不会将任何内容打印到 STDOUT,我认为这是您所关心的。
这取决于你是哪个应用运行。如果您正在构建脚本,则可以调用 System.halt(0)
。如果您有一个应用程序,请不要调用 System.halt(0)
,因为它会关闭整个系统而不考虑所有其他应用程序。而是使用 System.stop(0)
.
或者,您可以调用 exit(:shutdown)
退出当前进程。 :shutdown
是 OTP 退出的常见原因,如果您在 .exs
文件中,它也可以正常工作。