Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/elixir/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Elixir 我怎样才能安静地离开长生不老药?_Elixir - Fatal编程技术网

Elixir 我怎样才能安静地离开长生不老药?

Elixir 我怎样才能安静地离开长生不老药?,elixir,Elixir,Process.exit(self,:normal)执行该任务,但它打印出**(exit from#PID)normal。有没有办法在没有消息的情况下退出?有。但是解决方案取决于进程正在运行的代码(以及您看到消息打印的位置) 如果进程没有使用OTP行为,并且只是一个递归函数,那么您可以简单地从该函数返回。您的递归函数只需要有一个函数不再调用自身的情况。大概是这样的: def recursive_function(:exit) do :ok def recursive_function(oth

Process.exit(self,:normal)
执行该任务,但它打印出
**(exit from#PID)normal
。有没有办法在没有消息的情况下退出?

有。但是解决方案取决于进程正在运行的代码(以及您看到消息打印的位置)

如果进程没有使用OTP行为,并且只是一个递归函数,那么您可以简单地从该函数返回。您的递归函数只需要有一个函数不再调用自身的情况。大概是这样的:

def recursive_function(:exit) do
  :ok
def recursive_function(other_clause) do
  ...

如果您使用的是像gen_server这样的OTP行为,那么您所需要做的就是停止正在运行的应用程序。此将消息打印到IEx控制台(我假设您在那里看到该消息),但它不会将任何内容打印到STDOUT,我假设这是您关心的问题。

这取决于您正在运行的应用程序。如果您正在构建脚本,则可以调用
System.halt(0)
。如果您有应用程序,请不要调用
System.halt(0)
,因为它将关闭整个系统,而不考虑所有其他应用程序。而是使用
系统。停止(0)


或者,您可以调用
exit(:shutdown)
退出当前进程<代码>:关机是退出OTP的常见原因,如果您在
.exs
文件中,它也可以正常工作。

我尽可能回答了您的问题,但它确实很模糊。你能解释一下你的流程在运行什么,以及你在哪里看到打印的消息吗?这是一个OTP应用程序。代码如下:提交4cc3112e。当我运行
mixescript.build;时,我看到了这一点/速度计-h
。刚刚对该提交发表了评论。我说了一个case语句,但你也可以用if语句。因为只有两种可能的操作(不执行任何操作或退出,或继续执行main)。希望有帮助!