Žádný proces nemůže do žádného souboru zapisovat nebo z něj číst pokud ten soubor nejdřív neotevře. Procesy by po provedení čtení/zápisu měly soubor zavřít.

Běžný postup práce se souborem

Definice funkcí v OS API pro práci se soubory totiž vždy vypadají takto:

  • file_descriptor = OTEVŘI_SOUBOR(cesta)
  • ZAPIŠ_DO_SOUBORU(file_descriptor, start_pozice, bajty)
  • bajty = ČTI_ZE_SOUBORU(file_descriptor, start_pozice, počet_bajtů)
  • ZAVŘI_SOUBOR(file_descriptor)

Všimněte si, že funkce pro zápis a čtení vyžadují nějaký file_descriptor 1 který lze získat pouze zavoláním funkce pro otevření souboru. Tento file_descriptor je jen nějaký identifikátor 2, jakási “karta” díky které OS sleduje, se kterými soubory se zrovna pracuje.

⚠️ Důležité k zapamatování: Pokud proces neuzavře otevřený soubor pak jej za něj uzavře OS v případě, že proces skončí bez uzavření souboru. Pokud však proces nad souborem prováděl nějaké změny tak OS nezaručuje, že se tyto změny v souboru projeví.


  1. V Linuxu se označuje jako file descriptor, ve Windows jako file handle ↩︎

  2. Zpravidla ve formě obyčejného integeru ↩︎