Я знаю, что мы можем выйти из консоли IEX, нажав Ctrl-C. Мне любопытно, есть ли команда для ввода в консоль, которая также делала бы то же самое.
Другой способ выхода из IEX, кроме ctrl-C
Ответы (5)
Я могу придумать 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>
.
ОБНОВЛЕНИЕ: Недавно я также узнал о <ctrl-\>
. Подробнее об этом можно прочитать в этой статье. :
Чего я не знал, так это того, что вы можете выйти из оболочки, отправив Ctrl-. Оболочка немедленно завершит работу. Насколько мне известно, это имеет тот же эффект, что и прерывание оболочки в команде Break, не влияет на удаленные узлы и также работает вне iex (например, вы можете использовать для завершения своих тестов).
:init.stop
, который изящно останавливает виртуальную машину erlang.
- person ibizaman; 10.07.2016
Отключиться от оболочки и остановить текущий узел. Это то, что вам нужно в большинстве случаев.
1.1.
Ctrl+\
— стандартный метод выхода из оболочки Erlang. См. "4.4 Как выйти из оболочки Erlang?" в разделе Erlang — Начало работы.1.2.
Ctrl+C, a, Enter
— с помощью команды(a)bort
в Разбить меню.1.3.
Ctrl+C, Ctrl+C
— похоже на недокументированную функцию меню «Перерыв».1.4.
Ctrl+G, q, Enter
– с помощью командыq
(выйти из языка) команды Переключение пользователя (см. Erlang -- оболочка -- Режим JCL).Примечание. при этом удаленный узел остается активным, если вы подключились к нему с помощью
iex --remsh
(см.iex --help
и IEx -- удаленные оболочки).Выключите узел, к которому вы подключены.
2.1.
System.halt
— быстрое и грязное закрытие. Система выполнения завершает работу с кодом состояния 0 (чистый выход без ошибок). Вы также можете вызватьSystem.halt(:abort)
для прерывания с созданием дампа ядра. То же, что и:erlang.halt
.2.2.
:init.stop
(System.stop
в будущих версиях) - очистить неисправность. Все приложения закрываются плавно, весь код выгружается, а все порты закрываются до завершения работы системы путем вызоваhalt(Status)
.Примечание: это оставляет вашу оболочку активной, если вы подключились к удаленной оболочке с помощью
iex --remsh
.
Обратите внимание, что все эти параметры отключены, если Erlang запускается с игнорированием разрыва, +Bi, системным флагом: iex --erl +Bi
(что может быть полезно, например, при запуске ограниченной оболочки). Подробнее см. Erlang -- erl.
Выглядит как
System.halt
также работает.
вводите в оболочку :c.q()
и будьте счастливы
Я всегда думал, что ctrl-G, а затем q для выхода, был официальным способом выхода из оболочки iex.
См. раздел документации IEx в меню BREAK, который также показывает, как вы можете переключаться между альтернативными оболочками и т. д.
q
нет. Небольшое замечание, что для выхода можно использовать меню BREAK. Но само меню также не содержит опции (q)uit
, так что это пока совершенно недокументировано.
- person raacer; 21.12.2016