Zugriffsoperationen auf Dateien

Beispiel: „Lesen aus Datei“

C Öffnen von Dateien

open (path, flags, mode)

  • path: Pfadname der Datei
  • flags: welche Folgeoperationen erlaubt:
    • lesen, schreiben, am Ende anfügen…
  • mode: Zugriffsrechte bei neu erzeugter Datei:
    • RWX für User/Group/World…

liefert File Descriptor (fd):
Kurzbezeichnung für weiteren Zugriff

Link to original

C Lesen von Dateien

Lesen von Dateien

read (fd, buf, len)

  • Lesen von len Bytes „ab der aktuellen Position“ der Datei fd in den Puffer buf
  • aktuelle Position wird um gelesene Bytes weitergeschoben (sequentielles Lesen)

liefert Anzahl der tatsächlich gelesenen Bytes

Link to original

C Schreiben der Datei

write (fd, buf, len)

  • Schreiben von len Bytes „ab der aktuellen Position“ der Datei fd vom den Puffer buf
  • aktuelle Position wird um gelesene Bytes weitergeschoben (sequentielles Schreiben)

liefert Anzahl der tatsächlich geschrieben Bytes

Link to original

C Positionieren in der Datei

lseek (fd, offset, whence)

  • Aktuelle Position in der Datei fd wird um offset Bytes verschoben gemäß whence:
    • = SEEK_SET vom Anfang
    • = SEEK_CUR von aktueller Position
    • = SEEK_END vom Ende
      ggf. auch über das aktuelle Ende hinaus ⇒ „Löcher“

⇒ liefert neue Position

Link to original

C Schließen der Datei

close (fd)

Link to original

C Zustandsinformationen über Datei erfragen

stat (path, buf)

  • Infos aus Inode der Datei path
  • Inode-Nummer, mode, uid, gid, size, nlink,…
  • Ergebnis wird in buf abgelegt
  • wird z.B. für ls -l verwendet
Link to original

C Erstellen - Löschen von Verzeichnisse

  • mkdir (path, mode)
  • rmdir (path)
Link to original

Erzeugen - Löschen von Hard Links

  • link (path1, path2)
  • unlink (path)
Link to original

C Duplizieren von Dateideskriptoren

newfd = dup (fd)

  • Wird z.B. zur Realisierung der Ein-/Ausgabeumlenkung verwendet

Umsetzung von bla 2> err

fd = open (“err”, ...);   
close (2);   
fd2 = dup (fd);   
close (fd);  
Link to original