(5 Antworten)
Vor 2 Jahren geschlossen.
Wie unterscheiden sich spezielle Zeichendateien und spezielle Blockdateien von normalen Dateien in einem Unix-ähnlichen System? Warum heißen sie „Charakter-Spezial“ bzw. „Block-Spezial“?
Akzeptierte Antwort:
Wenn ein Programm Daten aus einer Datei liest oder schreibt, gehen die Anforderungen an einen Kernel-Treiber. Wenn es sich bei der Datei um eine normale Datei handelt, werden die Daten von einem Dateisystemtreiber verarbeitet und normalerweise in Zonen auf einer Festplatte oder anderen Speichermedien gespeichert, und die Daten, die aus einer Datei gelesen werden, sind das, was zuvor an dieser Stelle geschrieben wurde. Es gibt andere Dateitypen, bei denen andere Dinge passieren.
Wenn Daten in eine Gerätedatei gelesen oder geschrieben werden, wird die Anforderung vom Treiber für dieses Gerät verarbeitet. Jede Gerätedatei hat eine zugeordnete Nummer, die den zu verwendenden Treiber identifiziert. Was das Gerät mit den Daten macht, ist seine eigene Sache.
Block-Geräte (auch Block-Spezialdateien genannt) verhalten sich normalerweise ähnlich wie gewöhnliche Dateien:Sie sind ein Array von Bytes, und der Wert, der an einer bestimmten Stelle gelesen wird, ist der Wert, der zuletzt dort geschrieben wurde. Daten vom Blockgerät können im Speicher zwischengespeichert und aus dem Cache zurückgelesen werden; Schreibvorgänge können gepuffert werden. Blockgeräte sind normalerweise durchsuchbar (d. h. es gibt einen Positionsbegriff innerhalb der Datei, den die Anwendung ändern kann). Der Name „Blockgerät“ rührt daher, dass die entsprechende Hardware typischerweise jeweils einen ganzen Block liest und schreibt (z. B. einen Sektor auf einer Festplatte).
Zeichengeräte (auch als spezielle Zeichendateien bezeichnet) verhalten sich wie Pipes, serielle Ports usw. Das Schreiben oder Lesen in sie ist eine sofortige Aktion. Was der Fahrer mit den Daten macht, ist seine eigene Sache. Das Schreiben eines Bytes auf ein Zeichengerät kann dazu führen, dass es auf dem Bildschirm angezeigt, an einer seriellen Schnittstelle ausgegeben, in einen Ton umgewandelt wird, … Das Lesen eines Bytes von einem Gerät kann dazu führen, dass die serielle Schnittstelle auf die Eingabe wartet, möglicherweise ein zufälliges Byte zurückgibt ( /dev/urandom
), … Der Name „Zeichengerät“ rührt daher, dass jedes Zeichen einzeln behandelt wird.
Weitere Informationen finden Sie unter Wikipedia und Verstehen von /dev und seinen Unterverzeichnissen und Dateien.
Verwandte:Linux – Mehrere Protokolldateien nach Datum zusammenführen, die auch undatierte Zeilen enthalten (z. B. Stack-Traces)?