- In Bash habe ich gelernt, dass das Endsignal
durch dieses
Dokument geändert werden kann. Aber wie kann ich standardmäßig
das Ende der stdin-Eingabe signalisieren? - Ich habe zufällig herausgefunden, dass mit cat und
chardet ihre stdin-Eingaben
durch Strg+d als beendet signalisiert werden können. Aber
ich glaube mich zu erinnern, dass Strg+d und
Strg+c dem Beenden
der Ausführung eines laufenden Befehls ähneln. Also
liege ich falsch?
Akzeptierte Antwort:
Strg+D , wenn es am Anfang einer Zeile auf einem Terminal eingegeben wird, bedeutet das Ende der Eingabe. Dies ist kein Signal im Sinne von Unix:wenn eine Anwendung vom Terminal liest und der Benutzer Strg+D drückt , wird die Anwendung benachrichtigt, dass das Ende der Datei erreicht wurde (genauso, als ob sie aus einer Datei lesen und das letzte Byte übergeben hätte).
Strg+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. Beim Beenden zeigt es eine neue Eingabeaufforderung und wartet auf eine neue Befehlszeile).
Sie können die mit dem Dateiende und SIGINT verbundenen Zeichen mit stty
ändern Befehl, z. stty eof a
würde a
machen das Dateiendezeichen und stty intr ^-
würde das SIGINT-Zeichen deaktivieren. Das ist selten sinnvoll.