it-swarm.com.de

So signalisieren Sie das Ende der Standardeingabe

  1. In Bash habe ich gelernt, dass das Endsignal durch dieses Dokument geändert werden kann. Aber wie kann ich standardmäßig das Ende der Standardeingabe signalisieren?
  2. Ich habe zufällig festgestellt, dass bei Katze und Chardet ihre Standardeingaben durch Strg + d als beendet signalisiert werden können. Aber ich scheine mich zu erinnern, dass Strg + d und Strg + c dem Beenden der Ausführung eines laufenden Befehls ähnlich sind. Also irre ich mich
84
Tim

Ctrl+DWenn am Anfang einer Zeile eines Terminals eingegeben, bedeutet dies das Ende der Eingabe. Dies ist kein Signal im Unix-Sinne: Wenn eine Anwendung vom Terminal liest und der Benutzer drückt Ctrl+Dwird die Anwendung benachrichtigt, dass das Ende der Datei erreicht wurde (genau wie wenn sie aus einer Datei gelesen und das letzte Byte übergeben hat).

Ctrl+C sendet ein Signal, SIGINT . Standardmäßig beendet SIGINT (das Interrupt-Signal) die Vordergrundanwendung, aber die Anwendung kann das Signal abfangen und auf andere Weise reagieren (z. B. fängt die Shell selbst das Signal ab und bricht die von Ihnen eingegebene Zeile ab, tut dies jedoch nicht.) Beim Beenden wird eine neue Eingabeaufforderung angezeigt und auf eine neue Befehlszeile gewartet.

Sie können die mit dem Dateiende und SIGINT verknüpften Zeichen mit dem Befehl stty ändern, z. stty eof a würde a zum Dateiendezeichen machen, und stty intr ^- würde das SIGINT-Zeichen deaktivieren. Dies ist selten nützlich.

Ihr zweiter Punkt fasst zwei völlig verschiedene Dinge zusammen.

  • Strg + C sendet ein Kill-Signal an den laufenden Prozess.
  • Strg + D sendet ein Ende der Übertragung Zeichen.

Sie suchen Letzteres.

23
Caleb