Axel Rogat
Betriebssysteme und betriebssystemnahes Programmieren
 
3.2.5: stat Kapitel 3 3.3.1: Aufrufparameter 
 
  3.2.6 DOS-spezifische Aufrufe  
 

Es gibt noch einige Bibliotheksfunktionen, die bei DOS-Compilern zusätzlich zu den von UNIX übernommenen eingeführt wurden. Die Laufwerks-bezogenen Aufrufe machen unter UNIX beispielsweise gar keinen Sinn, da es dort ja keine unterschiedlichen Laufwerke, sondern einen einheitlichen Dateibaum gibt.

UNIX/DOS
int getcurdir(int drive, char *directory);
  schreibt nach directory den absoluten Pfad des aktuellen Verzeichnisses auf Laufwerk Nummer drive (0=Standard, 1=A:, 2=B:, etc.)
int getdisk(void);
  liefert die Nummer des aktuellen Laufwerks (0 für A:, 1 für B:, etc.)
int setdisk(int drive);
  wechselt zum Laufwerk mit der angegebenen Nummer (0 für A:, 1 für B:, etc.)
long filelength(int handle);
  gibt zu einer offenen Datei die Länge in Bytes zurück (-1 im Fehlerfall)

filelength läßt sich unter UNIX leicht mit einem fstat-Aufruf realisieren:

long filelength(int fd) { struct stat fileinfo; if (fstat(fd,&fileinfo)) return -1; return fileinfo.st_size; }
Ursprünglich war die DOS-Dateiverwaltung CP/M-kompatibel. Für den Dateizugriff mußte mit einer Datenstruktur FCB (File Control Block) und einem DOS-Interrupt gearbeitet werden.

Die entsprechenden Aufrufe stehen aus Kompatibilitätsgründen bis heute (auch unter Windows) zur Verfügung, sind aber im Vergleich zu den Funktionen mit Handles umständlich. Allerdings sind einige Geräte-Zugriffe nur mit erweiterten FCBs möglich. Wir wollen uns hier nicht ausführlicher mit FCBs beschäftigen.

 
3.2.5: stat Startseite 3.3.1: Aufrufparameter