Was passiert, wenn man zum Beispiel in einer WHILE-Schleife eine Abbruchbedingung angibt, die nie falsch werden kann (WHILE (1=1) DO...)? Richtig, man produziert auf diese Weise eine Endlosschleife. Im folgenden findet Ihr zwei Möglichkeiten, aus dieser Endlosschleife wieder herauszukommen:
CONTROL-C
Wenn Ihr die Tasten Control und C gleichzeitig drückt (CTRL und C an der
Uni-Tastatur bzw. STRG und C auf Eurer Tastatur daheim), dann wird die
Ausführung des aktuellen Programms abgebrochen, und so findet Ihr aus der
Endlosschleife wieder heraus. Natürlich gehen alle Ergebnisse, die Euer Programm
bis zu dieser Endlosschleife produziert hat, dadurch verloren. Achtet unbedingt
darauf, daß sich der Mauszeiger über dem Fenster befindet, in dem Ihr Euer
Programm laufen habt.
KILL
Falls aus irgendeinem Grund das obige Vorgehen nicht hilft, dann gibt es noch
eine brutalere Methode, Euer Programm zu beenden. Wer nur eine Art Kochrezept
dafür haben möchte, braucht nur die schwarzen Texte lesen. Wer eine kurze
Erklärung dafür haben möchte, was genau passiert, findet diese in den blauen
Texten.
Ihr öffnet eine neue Shell auf dem Rechner, auf dem Ihr Euer
Programm laufen habt (oder eröffnet eine SSH-Sitzung auf diesem Rechner von
einem anderen Rechner aus)
Ihr gebt den Befehl ps -ulogin |
grep programmname ein (Statt login
müßt Ihr natürlich Euren Login verwenden und statt
programmname den Namen Eures Programms, das die Endlosschleife produziert
hat)
Der Befehl ps liefert
Euch die sogenannte Prozeßtabelle, in der alle laufenden Programme (Prozesse)
registriert sind (vgl. Taskmanager in Windows). Die Option -u steht für
user und zeigt nur die Prozesse an, die unter dem
angegeben Login laufen. Mit grep filtert Ihr aus
allen Euren Prozessen denjenigen heraus, der sich hinter dem Namen programmname
verbirgt.
In der Zeile, die Ihr nun seht, steht ganz am Anfang eine Zahl.
Diese merkt Ihr Euch
Diese Zahl ist die sogenannte Prozeß-ID (PID) und
identifiziert eindeutig Euren Prozeß.
Ihr gebt das Kommando kill -9
prozessid ein (wobei prozessid die Zahl aus dem vorherigen Schritt
ist).
Mit kill sendet Ihr ein
Signal an den Prozeß mit der angegebenen Prozeß-ID, in diesem Fall das Signal
Nummer 9. Dieses Signal Nummer 9 beendet augenblicklich den entsprechenden
Prozeß.
Wer genaueres hierzu wissen möchte, der braucht noch ein wenig Geduld: im weiteren Verlauf des Studiums hören viele von Euch noch die Vorlesung Systemnahe Software (WiMas zum Beispiel im vierten Semester), und in dieser Vorlesung wird das obige Vorgehen ganz genau besprochen.
Eine Endlosschleife zum Herunterladen und Ausprobieren befindet sich in den Beispielen zu den Übungen (zu Blatt 5).
Wichtig: Bitte beendet diesen Prozess unbedingt auf einer der oben stehenden Weisen nachdem Ihr es ausprobiert habt! Sonst läuft er nämlich noch, wenn Ihr in Rente geht!