Process.exit(self, :normal)
はジョブを実行しますが、** (EXIT from #PID<0.49.0>) normal
を出力します。メッセージなしで終了する方法はありますか?
実行しているアプリケーションによって異なります。スクリプトを作成している場合は、System.halt(0)
を呼び出すことができます。アプリケーションがある場合は、System.halt(0)
を呼び出さないでください。他のすべてのアプリケーションを考慮せずに、システム全体がシャットダウンされます。代わりにSystem.stop(0)
を使用してください。
または、exit(:shutdown)
を呼び出して現在のプロセスを終了することもできます。 :shutdown
はOTPで終了する一般的な理由であり、.exs
ファイル内にいる場合は、問題なく機能します。
はい。ただし、解決策は、プロセスが実行しているコード(およびメッセージが出力される場所)によって異なります。
プロセスがOTP動作を使用しておらず、単に再帰関数である場合は、関数から簡単に戻ることができます。再帰関数は、関数がそれ自体を再度呼び出さない場合が必要です。このようなもの:
def recursive_function(:exit) do
:ok
def recursive_function(other_clause) do
...
Gen_serverのようなOTP動作を使用している場合は、実行中のアプリケーションを停止するだけです。これはwillメッセージをIExコンソールに出力します(メッセージが表示される場所であると思います)が、STDOUTには何も出力されません。これはあなたが懸念していることだと思います。