6 Grundlagen aus Anwendersicht
6 Grundlagen aus Anwendersicht
6 Grundlagen aus Anwendersicht
Erfolgreiche ePaper selbst erstellen
Machen Sie aus Ihren PDF Publikationen ein blätterbares Flipbook mit unserer einzigartigen Google optimierten e-Paper Software.
7 Die Shell<br />
FIFOs arbeiten nach dem First-In-First-Out-Prinzip. Das bedeutet: Die Daten, die zuerst<br />
in eine FIFO geschrieben werden, werden auch als Erste wieder vom lesenden<br />
Prozess empfangen.<br />
Das folgende Listing demonstriert diese Möglichkeit anhand einer Endlosschleife.<br />
Zunächst wird mit dem Programm mkfifo eine FIFO angelegt. Das tee-Programm<br />
lassen wir in die FIFO hineinschreiben, aber gleichzeitig durch Eingabeumlenkung<br />
<strong>aus</strong> ihr lesen. Das bedeutet, dass das Gelesene sofort wieder hineingeschrieben<br />
wird. Sobald also Daten in die FIFO geschrieben werden, liest tee diese so lange<br />
<strong>aus</strong> und schreibt sie so lange wieder in die FIFO hinein, bis der Wärmetod des<br />
Universums eintritt, der Strom <strong>aus</strong>fällt oder der Rechner abfackelt.<br />
Doch um den Prozess anzustoßen, schreiben wir einen String, nämlich »Endlosschleife«<br />
in die FIFO hinein. Es ist wichtig, dass auch dieser Prozess im Hintergrund<br />
gestartet wird, denn irgendwann soll diese Ausgabe ja dann doch gestoppt werden,<br />
um nicht das System abzuschießen.<br />
Nachdem eine Sekunde durch sleep (siehe Seite 1231) gewartet wurde, wird das<br />
Programm tee durch den Aufruf des pkill-Programms beendet. pkill beendet alle<br />
Prozesse, in deren Namen der angegebene Ausdruck vorkommt. Führen Sie diesen<br />
Test auf keinen Fall als Superuser auf einem Multiuser-System durch und bedenken<br />
Sie, dass alle anderen tee-Prozesse, für die der Benutzer die Beendigungsberechtigung<br />
besitzt, ebenfalls beendet werden!<br />
user$ mkfifo fifo<br />
user$ ls -l fifo<br />
prw------- 1 cdp_xe cdp_xe 0 Mar 22 19:44 fifo<br />
user$ tee fifo < fifo&<br />
[1] 2702<br />
user$ echo "Endlosschleife" > fifo & ; \<br />
> sleep 1; pkill tee<br />
[1] 18277<br />
Endlosschleife<br />
Endlosschleife<br />
Endlosschleife<br />
Endlosschleife<br />
...<br />
...<br />
Endlosschleife<br />
Endlosschleife<br />
[1] + terminated tee fifo < fifo<br />
Listing 7.58 Verwendung einer FIFO in der Shell<br />
240