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 5 Devices – eine einfache Verbindung zur Hardware
  gp 5.1 Die Gerätedateitypen
  gp 5.2 Die Gerätedateinummern
  gp 5.3 Zugriff auf die Gerätedateien
  gp 5.4 Gerätenamen
  gp 5.5 Spezielle Gerätedateien
  gp 5.6 Gerätedateien in der Praxis einsetzen
    gp 5.6.1 CD auswerfen und wieder schließen
    gp 5.6.2 CD-ROM-Fähigkeiten
    gp 5.6.3 Audio-CD abspielen – komplett und einzelne Tracks – Pause, Fortfahren und Stopp
    gp 5.6.4 Aktuellen Status der Audio-CD ermitteln
    gp 5.6.5 Das komplette Listing


Rheinwerk Computing

5.3 Zugriff auf die Gerätedateietoptop

Wie schon erwähnt, erfolgt der Zugriff auf Gerätedateien (dank Integration im Dateisystem) über die gewöhnlichen Datei-E/A-Funktionen. Natürlich lässt sich dies auch via Shell mit einer Dateiumleitung erledigen. Wollen Sie z. B. einen Text an die Gerätedatei des Druckers senden, so gehen Sie einfach folgendermaßen vor (entsprechende Zugriffsrechte vorausgesetzt):

$ cat textdatei.txt > /dev/lp0

Selbiges in einem C-Programm angewandt, sieht so aus:

int fd;
fd = open("/dev/lp0", O_WRONLY);
if(fd >= 0)
   write(fd, buf, buf_size);
close(fd);

Zum Öffnen und Schließen einer Gerätedatei werden somit open() und close() und zum Lesen und Schreiben die Funktionen read() und write() verwendet.

Mit der Möglichkeit, bestimmte Gerätedateien zu öffnen und schreibend bzw. lesend darauf zuzugreifen, können Sie nur einen Bruchteil dessen machen, wozu der Treiber imstande ist. Denn neben dem Schreiben und Lesen ist es auch möglich, ein Gerät in seiner spezifischen Art zu steuern. Dies können Sie mit dem Funktionsaufruf ioctl() (Input-Output-Control) erledigen. Erst damit können Sie den Treiber unter Linux direkt ansprechen. Hierfür müssen Sie allerdings den entsprechenden Befehlssatz für den entsprechenden Treiber kennen. Zuerst die Syntax zu ioctl():

#include <sys/ioctl.h>
int ioctl(int fd, int request ... );

Als ersten Parameter geben Sie den geöffneten Filedeskriptor an, mit dem Sie eine Gerätedatei geöffnet haben, und der zweite Parameter ist der entsprechende Befehl, der natürlich von der Gerätedatei abhängt, die geöffnet wurde. Sie können z. B. nicht für eine Festplatte den Befehl zum Auswerfen einer CD-ROM verwenden (groteskes Beispiel, es macht aber deutlich, worauf ich hinauswill). Im Fehlerfall liefert ioctl() -1, ansonsten bei Erfolg 0 zurück.

Beachten Sie allerdings, dass es sich hier um keinen Standard handelt. Argumente, Rückgabewerte und Semantik von ioctl() variieren je nach dem entsprechenden Gerätetreiber (der Aufruf wird als ein Allheilmittel für alle Operationen benutzt, die nicht sauber in das UNIX-Stream-E/A-Modell passen). Siehe ioctl_list(2) für eine Liste von vielen der bekannten ioctl-Aufrufe. Die Funktion ioctl() erschien in Version 7 von AT&T UNIX.

Die entsprechenden Befehlssätze für eine bestimmte Gerätedatei, um damit den entsprechenden Treiber zu steuern, finden Sie unter man ioctl_list – was allerdings mittlerweile keine vollständige Liste mehr darstellt. Wie Sie diese Befehle anwenden, werde ich Ihnen anhand eines Beispiels mit dem CD-ROM-Laufwerk demonstrieren.

 << 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