Rheinwerk Computing < openbook > Rheinwerk Computing - Professionelle Bücher. Auch für Einsteiger.
Professionelle Bücher. Auch für Einsteiger

 << zurück
Linux-UNIX-Programmierung von Jürgen Wolf
Das umfassende Handbuch – 2., aktualisierte und erweiterte Auflage 2006
Buch: Linux-UNIX-Programmierung

Linux-UNIX-Programmierung
1216 S., mit CD, 49,90 Euro
Rheinwerk Computing
ISBN 3-89842-749-8
gp Kapitel 2 E/A-Funktionen
  gp 2.1 Elementare E/A-Funktionen
  gp 2.2 Filedeskriptor
    gp 2.2.1 Verwaltung für offene Deskriptoren
  gp 2.3 Funktionen, die den Filedeskriptor verwenden
    gp 2.3.1 Datei öffnen – open()
    gp 2.3.2 Anlegen einer neuen Datei – creat()
    gp 2.3.3 Datei schließen – close()
    gp 2.3.4 Schreiben von Dateien – write()
    gp 2.3.5 Lesen von Dateien – read()
    gp 2.3.6 Schreib-/Lesezeiger positionieren – lseek()
    gp 2.3.7 Duplizieren von Filedeskriptoren – dup() und dup2()
    gp 2.3.8 Ändern oder Abfragen der Eigenschaften eines Filedeskriptors – fcntl()
    gp 2.3.9 Record Locking – Sperren von Dateien einrichten
    gp 2.3.10 Multiplexing E/A – select()
    gp 2.3.11 Unterschiedliche Operationen – ioctl()
    gp 2.3.12 Lesen und Schreiben mehrerer Puffer – writev() und readv()
    gp 2.3.13 Übersicht zu weiteren Funktionen, die den Filedeskriptor verwenden
  gp 2.4 Standard-E/A-Funktionen
    gp 2.4.1 Der FILE-Zeiger
    gp 2.4.2 Öffnen und Schließen von Dateien
    gp 2.4.3 Formatierte Ausgabe
    gp 2.4.4 Formatierte Eingabe
    gp 2.4.5 Binäres Lesen und Schreiben
    gp 2.4.6 Zeichen- und zeilenweise Ein-/Ausgabe
    gp 2.4.7 Status der Ein-/Ausgabe überprüfen
    gp 2.4.8 Stream positionieren
    gp 2.4.9 Puffer kontrollieren
    gp 2.4.10 Datei löschen und umbenennen
    gp 2.4.11 Temporäre Dateien erstellen
  gp 2.5 Mit Verzeichnissen arbeiten
    gp 2.5.1 Ein neues Verzeichnis anlegen – mkdir()
    gp 2.5.2 In ein Verzeichnis wechseln – chdir(), fchdir()
    gp 2.5.3 Ein leeres Verzeichnis löschen – rmdir()
    gp 2.5.4 Format eines Datei-Eintrags in struct dirent
    gp 2.5.5 Einen Verzeichnisstream öffnen – opendir()
    gp 2.5.6 Lesen aus dem DIR-Stream – opendir() und Schließen des DIR-Streams – closedir()
    gp 2.5.7 Positionieren des DIR-Streams
    gp 2.5.8 Komplettes Verzeichnis einlesen – scandir()
    gp 2.5.9 Ganze Verzeichnisbäume durchlaufen – ftw()
  gp 2.6 Fehlerbehandlung
  gp 2.7 Ausblick

Kapitel 2 E/A-Funktionen

Als Programmierer in GNU/Linux bzw. UNIX haben Sie zwei Möglichkeiten zur Auswahl, wenn es um die Ein-/Ausgabe (kurz E/A) von Daten geht. Das wären zum einen die Standard-C-Bibliothek, die Funktionen der höheren Ebene wie printf(), fopen(), fgets() etc. für Sie bereithält, und zum anderen die elementaren E/A-Funktionen der niedrigeren Ebene mit Funktionen wie open(), read() oder write(), die natürlich ebenso genormt sind.

Da dieses Buch keinen Anspruch erhebt, ein Linux-Einsteigerbuch zu sein, sind für dieses Kapitel grundlegende Kenntnisse des Linux-Dateisystems gefragt. Dies schließt mindestens folgende Punkte mit ein:

gp  Umgang mit Dateien und Verzeichnissen – damit ist der Umgang mit grundlegenden Kommandos zur Verwaltung von Dateien und Verzeichnissen gemeint.
gp  Zugriffsrechte, Benutzer und Gruppenzugehörigkeit – Sie sollten mit den Hintergründen der Zugriffssicherung von Dateien und Verzeichnissen vertraut sein.
gp  Linux-Verzeichnisstruktur – »Wo bin ich gerade, und wo finde ich was«-Fragen in der Verzeichnisstruktur sollten Sie schon zu Grabe getragen haben.
gp  Verwaltung des Dateisystems – Sie sollten wissen, wie Sie auf die Festplatte als auch auf externe Datenträger (CD-ROM etc.) zugreifen können.

Rheinwerk Computing

2.1 Elementare E/A-Funktionetoptop

Elementare E/A-Funktionen spielen in Linux/UNIX eine bedeutende Rolle u. a. beim Öffnen, Lesen und Schreiben von Dateien. Diese E/A-Funktionen sind allerdings nicht so bequem zu verwenden wie die Standard-E/A-Funktionen, da jeglicher Komfort wie z. B. die Pufferung fehlt.


Hinweis   Die elementaren E/A-Funktionen werden von POSIX.1 und XPG5 vorgeschrieben, nicht aber vom ANSI C-Standard. Ich erwarte zwar in diesem Buch, dass der Leser sich bereits mit der Sprache C auseinander gesetzt hat, aber ich werde auch kurz die Standard-E/A-Funktionen zusammenfassen und vielleicht auf die eine oder andere Besonderheit in Bezug auf Linux hinweisen.


Häufiger werden unter Linux/UNIX die elementaren E/A-Funktionen eingesetzt, da viele von diesen so genannte Systemcalls (auch Syscalls) des Kernels sind und somit mehr die Systemfähigkeiten ausnutzen, weil sie eine Art direkte Schnittstelle zum System bieten. Natürlich sollte auch erwähnt werden, dass die elementaren E/A-Funktionen die Basis für die Standard-E/A-Funktionen darstellen. Also Standardfunktionen wie printf(), fputs(), putchar() oder putc() bauen alle auf der niedrigeren Ebene der elementaren Ausgabefunktionen auf, und Funktionen wie scanf(), fgets(), getchar() oder putc() verwenden die niedrigere Ebene der elementaren Eingabefunktionen.


Hinweis   Natürlich können Sie sich nicht immer aussuchen, ob Sie jetzt Funktionen der niedrigeren Ebene oder der höheren Ebene verwenden. Manche Fälle lassen sich nur in der niedrigeren Ebene realisieren. Eine Verbindung zu einem Hardware-Gerät benötigt einen Filedeskriptor (mehr dazu gleich), ebenfalls ein geöffnetes Socket oder eine Pipe.


Um Sie jetzt mit den vielen Begriffen nicht zu verwirren, sprechen wir immer nur von zwei verschiedenen Arten der E/A-Funktionen, hierzu eine Tabelle zum Überblick.


Tabelle 2.1    … um den Überblick zu wahren

E/A-Funktionen Ebene Englischer Begriff Standard
Elementar niedrige Ebene Low Level POSIX.1, XPG5
Standard höhere Ebene High Level ANSI C

Natürlich muss auch erwähnt werden, dass die so genannten Systemcalls, die von einem C-Programm gemacht werden, nicht DEN Systemcall darstellen, der ausgeführt wird. Z. B. stellt die Funktion open() nichts anderes als ein Wrapper für _syscallX(open ...) dar. Wird ein Systemcall ausgeführt, führt dies zu einem Kontextswitch wo der aufrufende Prozess mit dem Interrupt 0x80 vom User-Level zum Kernel-Level wechselt. Die zusätzlichen Parameter des Interrupts bestimmen dann den korrekten Systemcall.

Im Großen und Ganzen werden Sie als Linux-(System-)Programmierer recht wenig davon mit bekommen, da Ihnen die C-Bibliothek die Arbeiten mit den Systemcalls vollständig abnimmt. Um die Abarbeitung von Systemaufrufen (Systemcalls) besser zu verstehen, müssen Sie sich intensiver mit der Abarbeitung des Kernels befassen.

 << zurück
  
  Zum Rheinwerk-Shop
Neuauflage: Linux-UNIX-Programmierung
Neuauflage:
Linux-UNIX-
Programmierung

bestellen
 Ihre Meinung?
Wie hat Ihnen das Openbook gefallen?
Ihre Meinung

 Buchtipps
Zum Rheinwerk-Shop: Linux-Server






 Linux-Server


Zum Rheinwerk-Shop: Das Komplettpaket LPIC-1 & LPIC-2






 Das Komplettpaket
 LPIC-1 & LPIC-2


Zum Rheinwerk-Shop: Linux-Hochverfügbarkeit






 Linux-
 Hochverfügbarkeit


Zum Rheinwerk-Shop: Shell-Programmierung






 Shell-
 Programmierung


Zum Rheinwerk-Shop: Linux Handbuch






 Linux Handbuch


 Lieferung
Versandkostenfrei bestellen in Deutschland, Österreich und der Schweiz
Info





Copyright © Rheinwerk Verlag GmbH 2006
Für Ihren privaten Gebrauch dürfen Sie die Online-Version natürlich ausdrucken. Ansonsten unterliegt das Openbook denselben Bestimmungen, wie die gebundene Ausgabe: Das Werk einschließlich aller seiner Teile ist urheberrechtlich geschützt.
Alle Rechte vorbehalten einschließlich der Vervielfältigung, Übersetzung, Mikroverfilmung sowie Einspeicherung und Verarbeitung in elektronischen Systemen.


Nutzungsbestimmungen | Datenschutz | Impressum

Rheinwerk Verlag GmbH, Rheinwerkallee 4, 53227 Bonn, Tel.: 0228.42150.0, Fax 0228.42150.77, service@rheinwerk-verlag.de

Cookie-Einstellungen ändern