Hi,
CTRL-Z bricht aber die Eingabe nicht ab, sondern beendet sie ordnungsgemäß.
richtig, denn Ctrl-Z ist als ASCII-Steuerzeichen EOF (End Of File) definiert.
Es wird an den String eine ASCII-NUL angehängt, ...
DAS ist wiederum Sache der Applikation. Das Betriebssystem selbst gibt über den Stream stdin nach den Nutzdaten lediglich das Ctrl-Z weiter; der nächste Leseversuch ergibt dann je nach Implementierung entweder einen Fehler (input past end of file) oder wiederholt das EOF-Zeichen.
Eine Anwendung *kann* von sich aus das Ctrl-Z durch ein NUL ersetzen oder auch noch ein NUL hinten dranhängen; automatisch passiert das aber zumindest bei DOS und Windows nicht - und ich vermute, auch bei Linux nicht.
Abbrechen kannst Du mit CRTL-C, wenn das Break-Flag von der Applikation abgefragt wird.
Das geschieht aber bei DOS schon im BIOS und wird dann meistens in die höheren Schichten übernommen.
Nein. Vom BIOS wird nur die Kombination Ctrl-Break abgefragt, bei deren Erkennen dann ein Interrupt (INT 1Bh) ausgelöst wird. Die Default-Interruptroutine im BIOS setzt tatsächlich nur ein Flag, das diesen Zustand anzeigt. Das Zeichen Ctrl-C ist für die BIOS-Funktionen eine Eingabe wie jedes andere ASCII-Zeichen auch.
Die I/O-Funktionen von DOS fragen ihrerseits dieses Flag ab, reagieren aber zusätzlich auch auf Ctrl-C mit einem Abbruch.
Schönen Abend noch,
Martin
Auf jeden Menschen auf der ganzen Welt entfallen statistisch gesehen etwa 3000 Spinnen, wie Wissenschaftler jetzt festgestellt haben.
Wer will meine haben? Denn ich will sie bstimmt nicht.