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, что я предполагаю в том, что вас беспокоит.