我怎样才能安静地退出 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 文件中,它也可以正常工作。