17.11.2013 Aufrufe

6 Grundlagen aus Anwendersicht

6 Grundlagen aus Anwendersicht

6 Grundlagen aus Anwendersicht

MEHR ANZEIGEN
WENIGER ANZEIGEN

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

Hurra! Ihre Datei wurde hochgeladen und ist bereit für die Veröffentlichung.

Erfolgreich gespeichert!

Leider ist etwas schief gelaufen!