5.4. ,,Spezielle`` Dateien: Zeichen- und Blockorientierte Dateien  

Wie schon gesagt, sind dies Dateien, die entweder vom System erzeugt wurden, oder aber Peripheriegeräte Ihres Systems. Ebenfalls wurde schon ausgeführt, das die Daten der blockorientierten Dateien zwischengespeichert werden, wohingegen das mit den Daten zeichenorientierter Dateien nicht getan wird. Um dies zu verdeutlichen, legen Sie eine Diskette in Ihr Diskettenlaufwerk ein und geben Sie folgenden Befehl zweimal ein:

$ dd if=/dev/fd0 of=/dev/null

Sie können hierbei Folgendes beobachten: Während beim ersten Mal, bei dem das Kommando ausgeführt wurde, der Inhalt der Diskette gelesen wurde, fand beim zweiten Mal kein Zugriff auf das Laufwerk statt. Die Erklärung dafür ist denkbar einfach und beruht auf der Zwischenspeicherung der Daten beim ersten Abfragen. Solange Sie die Diskette nicht wechseln, oder den Inhalt darauf ändern, bleiben diese im Speicher erhalten.

Wenn Sie aber nun auf diese Art und Weise eine große Datei ausdrucken wollen, gehen Sie folgendermaßen vor (ja, das Folgende funktioniert):

$ cat /eine/große/druckbare/datei/irgendwo > /dev/lp0

Die Ausführung dieses Befehls dauert immer gleich lange, egal ob Sie ihn nun einmal, zweimal oder gar fünfzig Mal aufrufen. Dies liegt da­ran, dass /dev/lp0 ein zeichenorientiertes Gerät ist, und seine Daten nicht zwischengespeichert werden.

Die Tatsache, dass blockorientierte Dateien zwischengespeichert werden, hat einen hübschen Seiteneffekt: nicht nur das Lesen, sondern auch das Schreiben wird zwischengespeichert. Daher kann das Schreiben auf Festplatten asynchron von statten gehen: Das Schreiben auf eine Platte geschieht nicht sofort nachdem Sie den entsprechenden Befehl abgesetzt haben, sondern dann, wenn Ihr Linux es für sinnvoll hält.

Abschließend sei noch erwähnt, dass solche Dateien noch eine Major- und eine Minor-Nummer (engl. für ,,Haupt- und Nebennummer``) besitzen. Bei der Ausgabe des Kommandos ls -l erscheinen diese Werte statt der Größe der Datei.

$ ls -l /dev/hda /dev/lp0
brw-rw----    1 root     disk       3,   0 Mai  5  1998 /dev/hda
crw-rw----    1 root     daemon     6,   0 Mai  5  1998 /dev/lp0

Die Major- und Minor-Nummern der Datei /dev/hda sind hier 3, 0; während /dev/lp0 als Werte 6, bzw. 0 aufweist. Beachten Sie bitte, dass diese Nummern nur innerhalb jeder Kategorie eindeutig sind. Es kann also auch eine zeichenorientierte Datei mit einer Major-Nummer von 3 und einer Minor-Nummer von 0 existieren (diese existiert sogar: /dev/ttyp0) und genauso auch eine blockorientierte Datei mit 6, 0 als Major- und Minor-Nummer. Diese Nummern existieren aus einem ganz einfachen Grund: sie erlauben Linux die zu der entsprechenden Datei (also den entsprechenden Peripheriegeräten) passenden Befehle auszuwählen. Sie sprechen ein Diskettenlaufwerk eben nicht genauso an, wie beispielsweise eine SCSI-Festplatte.


Tux on Star from MandrakeSoft Linux ist ein eingetragenes Warenzeichen von Linus Torvalds. Alle anderen Warenzeichen und Copyrights sind das Eigentum ihrer Inhaber.
Sofern nichts anderes Angaben ist, unterliegen die Inhalte der Seiten sowie alle Bilder dem Copyright von MandrakeSoft S.A. und MandrakeSoft Inc. 2000.
http://www.linux-mandrake.com/