2015-05-06 3 views

Antwort

24

ich von 3 Möglichkeiten denken kann umschalten kann eine IEx Shell zu beenden:

  1. Die erwähnte <ctrl-c> traf zweimal oder einmal gefolgt von q und dann <enter>,
  2. <ctrl-g> und dann q + <enter>,
  3. und schließlich System.halt,

aber es gibt einen Unterschied zwischen System.halt und dem anderen.

Nämlich, dass System.halt "hält die Erlang Laufzeit" und die anderen nur "die Shell beenden".

Wenn nur eine Shellsitzung ausgeführt wird oder die Sitzung nicht an eine separate Laufzeit angeschlossen ist, führen beide Methoden zum gleichen Ergebnis. Wenn jedoch eine Sitzung mit einer separaten Laufzeit verbunden ist, z. via iex --remsh (remote shell), dann läuft System.halt in es wird die Laufzeit zu stoppen und so beide Shell-Prozesse/Laufzeiten zu beenden. Das Beenden einer Shell (über Methode 1. oder 2.) stoppt nicht die Laufzeit, mit der sie verbunden ist.

Fazit: Wenn Sie sich mit Ihrer Shell mit anderen Laufzeiten verbinden, dann wissen Sie, dass System.halt die Laufzeit anhält, mit der Sie verbunden sind. Wenn Sie nicht möchten, verwenden Sie <ctrl-c>.

UPDATE: Kürzlich habe ich auch über <ctrl-\> herausgefunden. Sie können mehr darüber in this article lesen:

Was ich nicht wusste ist, dass Sie die Shell durch Senden von STRG- beenden können. Die Shell wird sofort beendet. Soweit ich weiß, hat es die gleiche Wirkung als Abbrechen der Shell in den Break-Befehl, es betrifft nicht Remote-Knoten und es funktioniert auch außerhalb von iex (zum Beispiel können Sie verwenden, um Ihre Tests zu beenden).

+1

Es gibt auch ': init.stop', der die Erlang-VM anmutig stoppt. – ibizaman

+0

bitte verbessern Sie Ihre Antwort nach @ Raacers Struktur und adoptieren Sie seine neue Information – flp

+1

@flp Bitte beachten Sie meinen Kommentar hier https://stackoverflow.com/questions/30085376/another-way-to-exiting-iex-other-than-ctrl -c/30095378 # comment70835929_41253670 –

6

Sieht aus wie

System.halt 

auch funktioniert.

+0

run ‚h System.halt‘ bekommen Informationen über zusätzliche Argumente Sie gerne hinein passieren können – Letseatlunch

1

Ich dachte immer, ctrl-G von q gefolgt für verlassen die offizielle Art und Weise war die IEX-Shell zu verlassen. http://elixir-lang.org/docs/v1.0/iex/IEx.html Siehe unter Der Break-Befehl die auch zeigt, wie Sie zwischen alternativen Schalen usw.

+0

Es gibt nichts über 'q' auf der angegebenen Seite. Nur eine kurze Anmerkung, dass das BREAK-Menü zum Beenden verwendet werden kann. Aber das Menü selbst enthält auch nicht die "(q) uit" -Option, daher sieht das vorerst völlig undokumentiert aus. – raacer

9
  1. Disconnect von Shell und aktuellen Knoten zu stoppen. Dies ist, was Sie in den meisten Fällen benötigen.

    1.1. Ctrl+\ - Standardmethode zum Beenden der Erlang-Shell. Siehe "4.4 Wie kann ich die Erlang-Shell beenden?" in Erlang -- Getting Started.

    1.2. Ctrl+C, a, Enter - über den (a)bort Befehl des Break Menüs.

    1.3. Ctrl+C, Ctrl+C - sieht wie undokumentierte Funktion des Break-Menüs aus.

    1.4. Ctrl+G, q, Enter - über die q (quit erlang) Commant des User Switch Menüs (siehe Erlang -- shell -- JCL Mode).

    Hinweis: diese Blätter entfernten Knoten lebendig, wenn Sie es mit iex --remsh angeschlossen haben (siehe iex --help und IEx -- Remote Shells).

  2. Herunterfahren der Knoten, mit dem Sie verbunden sind.

    2.1. System.halt - schnell und schmutzig heruntergefahren. Das Runtime-System wird mit dem Statuscode 0 beendet (Clean-Exit ohne Fehler). Sie können auch System.halt(:abort) aufrufen, um mit dem Core-Dump abzubrechen. Wie :erlang.halt.

    2.2. :init.stop (System.stop in zukünftigen Versionen) - sauberes Herunterfahren. Alle Anwendungen werden reibungslos beendet, der gesamte Code wird entladen und alle Ports werden geschlossen, bevor das System durch den Aufruf halt(Status) beendet wird.

    Hinweis: diese Blätter Shell am Leben, wenn Sie eine Remote-Shell mit iex --remsh angeschlossen haben.

Beachten Sie, dass alle diese Optionen deaktiviert sind, wenn Erlang mit der Pause ignorieren gestartet wird, + Bi, Systemflag: iex --erl +Bi (die nützlich sein können, wenn beispielsweise nur eine eingeschränkte Shell ausgeführt wird). Weitere Informationen finden Sie unter Erlang -- erl.

+1

Warum haben Sie sich dazu gedrängt, bereits vorhandene Antworten zu wiederholen? –

+2

@OnorioCatenacci Weil die beste Antwort zu kompliziert ist, keine saubere Struktur hat und keine Links enthält. – raacer

+0

@OnorioCatenacci und übrigens, ich denke, einige Erklärungen in der besten Antwort sind nicht wirklich richtig. – raacer

0

Eingang in der Schale :c.q() und

Verwandte Themen