Systémové programování pro blbečky

1. Otevření souboru

Aby mohl proces získat přístup k datům souboru, musí jej nedřív otevřít, k tomu potřebuje patřičná práva a cestu k souboru, získává tím popisovatele který umožní číst nebo zapisovat.

1.1 Popisovatel souboru

Popisovatel souboru (file descriptor) je číslo, které v kontextu daného procesu odkazuje na soubor. Obvykle jich může mít jeden proces otevřený až 1024. Každý proces začíná se třemi již otevřenými popisovateli.

Popisovatelé souborů můžou odkazovat nejen na soubory, ale také i na složky, v tom případě je ale nelze použí pro manipulaci dat.

1.1.1 Standardní popisovatele

Každý proces má standardní popisovatele které odkazují na vstupní a výstupní proudy.

Jedná se o:

  • 0 – standardní vstup (stdin)
  • 1 – standardní výstup (stdout)
  • 2 – standardní chybový výstup (stderr)

1.2 Způsob otevření souboru

Při otevření souboru specifikuje proces paramatery, které určují jak s ním bude pracovat.

Povinně musí proces specifikovat režim přístupu, ten může být:

  1. Pouze pro čtení (O_RDONLY)
  2. Pouze pro zápis (O_WRONLY)
  3. Pro čtení i pro zápis (O_RDWR)

Další parametry určují co by se měly stát z daty v souboru zdali již existuje, jestli by měl být soubor vytvořen pokud již neexistuje, nebo jestli se proces snaží otevřít složku atd…

2. Čtení ze souborů

Poté co proces získá popisovatel souboru s čtecím režimem, může začít číst data.

V nejjednodušším případě vytvoří proces oblast paměti do které si přeje nahrát data ze souboru a požádá jádro aby jej naplnilo. Jádro poté načte z disku co nejvíc dat může a předá je procesu spolu s počtem bajtů, ktéré bylo schopné přečíst, pokud je počet bajtů přečtených nižší než o kolik bajtů si proces z
ažádal, jedná se o konec souboru.

3. Zápis do souborů

Podobně jako pro čtení potřebuje pro zápis proces nejdříve získat popisovatel s režimem zápisu.

Způsob zápisu je identický se čtením, kromě toho že nyní jádro přijímá data z paměti a zapisuje je na disk.

4. Kurzor souboru

Každý otevřený soubor má kurzor. Kurzor ukazuje na další bajt který má být přečtený, nebo na bajt od kterého se má provést zápis.

Proces může kurzorem libovolně pohybovat po délce souboru. Kurzor se po zápisu nebo čtení posouvá v pravo.

Zdroje: