Also habe ich Zork 1 gespielt und einen Text kopiert, um ihn einem Freund zu zeigen, aber ich habe versehentlich vergessen, die Umschalttaste beim Drücken von CTRL+ gedrückt zu halten C. Dadurch wurde der Befehl abgebrochen und ich verlor meine Zork-Daten ...
Gibt es einen "hilfreichen" Hinweis, mit dem ich verhindern kann, dass der Befehl beim Drücken der Tasten CTRL+ gestoppt wird C?
Beachten Sie, dass Zork im Terminal ausgeführt wird. Es ist ein Terminal-basiertes Spiel, in dem Sie Befehle geben, um verschiedene Aktionen auszuführen.
Antworten:
Die Tastenkombination Ctrl+ Csendet das Zeichen
^C
(Bytewert 3). Dadurch sendet das Terminal das SIGINT- Signal an das im Vordergrund laufende Programm¹. Die herkömmliche Aktion für dieses Signal besteht darin, den aktuellen Befehl zu unterbrechen: Programme, die aufeinanderfolgende Befehle verarbeiten sollen, kehren zu ihrer Eingabeaufforderung auf oberster Ebene zurück, während Programme, die als einzelner Stapelbefehl oder als kontinuierlicher Interaktions-Exit konzipiert sind. Offensichtlich wurde das von Ihnen verwendete Programm nach dem zweiten Modell entworfen.Dieser signalgebende Schlüssel ist eine Funktion der allgemeinen Terminalschnittstelle im Kernel, die von allen Terminalemulatoren und realen physischen Terminals gemeinsam genutzt wird. Sie können , welche Taste sendet dieses Signal sowie andere Tasten (insbesondere konfigurieren CtrlZSenden SIGSTOP mit dem das Vordergrundprogramm auszusetzen)
stty
Befehl. So stellen Sie die Taste für SIGINT auf Ctrl+ _(im aktuellen Terminal):So deaktivieren Sie es insgesamt:
So setzen Sie alle Einstellungen auf die Standardeinstellungen zurück:
Der Schlüssel darf keine beliebige Tastenkombination sein, sondern muss ein Einzelbyte-Wert sein. Die
stty
Einstellung kann von Programmen überschrieben werden. Einige Programme (insbesondere Programme im Vollbild-Textmodus) führen eine eigene Tastenkombination aus.¹ Genauer gesagt auf alle Prozesse in der Vordergrundprozessgruppe , für die das Terminal das steuernde Terminal ist .
quelle
CTRL+ Csendet ein Interrupt-Signal (
SIGINT
das Signal Nummer 2 ist) an den Job im Vordergrund. Sie können dies deaktivieren, indem Sie das Signal mit demtrap '' 2
Befehl "abfangen", bevor Sie Zork starten.Aktivieren Sie CTRL+ C(Untrap
SIGINT
) erneut mittrap 2
.Tipp : Sie können Folgendes zu Ihrem hinzufügen
~/.bashrc
:Auf diese Weise werden Sie nie vergessen, das Signal zu deaktivieren und wieder zu aktivieren, und es ist einfacher, das Spiel zu starten, indem Sie einfach
zork
das Terminal eingeben .Hinweis : Sie können den Signalnamen anstelle der Nummer verwenden, wenn dies für Sie am bequemsten ist, z. B.
trap '' sigint
odertrap '' int
. Ich bin nur daran gewöhnt, die Zahlen zu benutzen, zB inkill -9
und so.quelle