Я знаю, что мы можем выйти из консоли IEX с помощью control-C. Мне любопытно, есть ли команда для ввода в консоль, которая также будет делать то же самое.
Еще один способ выхода из IEX, кроме ctrl-C
Ответ 1
Я могу думать о 3 способах выхода из оболочки IEx:
- Упомянутый
<ctrl-c>
ударил дважды или один раз, а затемq
, а затем<enter>
, -
<ctrl-g>
, а затемq
+<enter>
, - и, наконец,
System.halt
,
но есть разница между System.halt
и другими.
А именно, что System.halt
"останавливает время выполнения Erlang", а остальные просто "выходят из оболочки".
Если у вас запущен только один сеанс оболочки или сеанс не подключен к отдельной среде выполнения, то оба способа приведут к такому же результату.
Но если у вас сеанс подключен к отдельной среде выполнения, например. через iex --remsh
(удаленная оболочка), тогда запуск System.halt
в нем остановит время выполнения и, таким образом, сделает оба процесса оболочки/время выполнения завершенным. Просто выключение оболочки (с помощью метода 1. или 2.) не остановит время выполнения, к которому он подключен.
Заключение: если вы подключаетесь к своей оболочке к другим версиям, тогда знайте, что System.halt
остановит рабочую среду, к которой вы подключились. Если вы не хотите этого делать, используйте <ctrl-c>
.
UPDATE: Недавно я также узнал о <ctrl-\>
. Подробнее об этом читайте в в этой статье:
Я не знал, что вы можете выйти из оболочки, отправив Ctrl-. Оболочка немедленно выйдет. Насколько я знаю, он имеет то же самое эффект как прерывание оболочки в команде Break, это не влияет удаленных узлов, а также работает вне iex (например, вы можете используйте для завершения тестов).
Ответ 2
-
Отключиться от оболочки и остановить текущий узел. Это то, что вам нужно в большинстве случаев.
1.1.
Ctrl+\
- стандартный метод выхода из оболочки Erlang. См. "4.4 Как мне выйти из оболочки Erlang?" в Эрланге - Начало работы.1.2.
Ctrl+C, a, Enter
- с помощью команды(a)bort
в меню Break.1.3.
Ctrl+C, Ctrl+C
- выглядит как недокументированная особенность меню Break.1.4.
Ctrl+G, q, Enter
- черезCtrl+G, q, Enter
q
(quit erlang) меню User Switch (см. Erlang - shell - JCL Mode).Примечание: это делает удаленный узел
iex --remsh
если вы подключились к нему с помощьюiex --remsh
(см.iex --help
и IEx - Remote Shells). -
Завершите работу узла, к которому вы подключены.
2.1.
System.halt
- быстрое и грязное завершение работы. Система выполнения выходит с кодом состояния 0 (чистый выход без ошибок). Вы также можете вызватьSystem.halt(:abort)
для прерывания с помощью дампаSystem.halt(:abort)
. То же, что и:erlang.halt
.2.2.
:init.stop
(System.stop
в будущих версиях) - чистое завершение работы. Все приложения удаляются без проблем, весь код выгружается, и все порты закрываются до завершения работы системы, вызываяhalt(Status)
.Примечание. Это позволяет вашей оболочке
iex --remsh
если вы подключились к удаленной оболочке с помощьюiex --remsh
.
Обратите внимание, что все эти опции отключены, если Erlang запускается с остановом игнорирования, +Bi, системным флагом: iex --erl +Bi
(что может быть полезно, например, при запуске ограниченной оболочки). Смотрите Erlang - erl для получения дополнительной информации.
Ответ 3
Похож на
System.halt
также работает.
Ответ 4
вход в оболочку
:c.q()
и быть счастливым
Ответ 5
Я всегда думал, что ctrl-G а затем q зайти был официальным способом выхода из оболочки iex. http://elixir-lang.org/docs/v1.0/iex/IEx.html См. В разделе Команда Break, которая также показывает, как вы можете переключаться между альтернативные оболочки и т.д.