Как я могу спокойно выйти из Эликсира?
Process.exit(self, :normal)
выполняет задание, но оно печатает ** (EXIT from #PID<0.49.0>) normal
. Есть ли способ выйти без сообщения?
Ответы
Ответ 1
Это зависит от того, какое приложение вы используете. Если вы создаете скрипт, вы можете вызвать System.halt(0)
. Если у вас есть приложение, не вызывайте System.halt(0)
, так как он System.halt(0)
всю систему без учета всех других приложений. Вместо этого используйте System.stop(0)
.
Кроме того, вы можете вызвать exit(:shutdown)
чтобы выйти из текущего процесса. :shutdown
- общая причина выхода в OTP, и если вы находитесь внутри файлов .exs
, это тоже будет очень хорошо.
Ответ 2
Да. Но решение зависит от кода, в котором работает ваш процесс (и где вы видите сообщение, напечатанное).
Если процесс не использует поведение OTP и является просто рекурсивной функцией, вы можете просто вернуться из функции. В вашей рекурсивной функции просто должен быть случай, когда функция снова не вызывает себя. Что-то вроде этого:
def recursive_function(:exit) do
:ok
def recursive_function(other_clause) do
...
Если вы используете поведение OTP, такое как gen_server, все, что вам нужно сделать, это остановить приложение, в котором оно работает. Это будет печатать сообщения на консоли IEx (я предполагаю, что вы видите это сообщение), но он ничего не печатает в STDOUT, что я предполагаю в том, что вас беспокоит.