Skip to content
On this page
10. File Functions
1

File Functions

15.05.2023
10. File Functions
2

Library Function Calls vs. System Function Calls

15.05.2023
10. File Functions
3

Zugriff aus Applikationen (via glibc)

  • Greiffen immer via Library Call auf das Syscall-Interface zu.
    • ... verbessert Portierbarkeit
  • Aufruf eines Systemcalls dauert wesentlich länger als ein Functioncall.
  • Führt zu einem Context-Switch (Wechsel aus dem User- in den Kernelspace)
15.05.2023
10. File Functions
4

Unbuffered File-IO

  • Auf Character Device findet im Kernel kein Buffering statt
  • Kein Page Cache / Kein Block IO
  • Bei Blockdevices sind Zugriffe via Page Cache / und BlockIO gebuffert
15.05.2023
10. File Functions
5

Unbuffered File System Calls

  • Wrapper Funktionen sind in der libc implementiert
  • open, read, write, lseek, ioctl, mmap, close
  • Info via man 2 <systemcall>
  • Weitere Calls für
    • Sockets
    • Prozesskontrolle
    • Speicherverwaltung
    • IPC
15.05.2023
10. File Functions
6

Buffered Calls

  • Wrapperfunction in <stdio.h> in C / C++ verfügbar
  • libc buffert System Calls
    • ... um weniger Context-Switches zu erreichen.
    • wünschenswert bei Zugriff auf Blockspeicher / viele kurze Transfers
    • unerwünscht bei Characterdevices mit Ziel kurze Latenzzeiten zu gewährleisten
  • fopen, fread, fwrite, fprintf, fclose, fputs, fflush
15.05.2023
10. File Functions
7

fflush

  • Erzwingt das leeren eines Buffers und blockiert
  • auch möglich mit fclose
15.05.2023