Konec souboru- End-of-file

V oblasti výpočetní techniky je konec souboru ( EOF ) podmínkou v operačním systému počítače, kde ze zdroje dat nelze číst žádná další data. Zdroj dat se obvykle nazývá soubor nebo stream .

Podrobnosti

Ve standardní knihovně C funkce čtení znaků, jako je getchar, vracejí hodnotu rovnou symbolické hodnotě (makro) EOF, což znamená, že došlo ke stavu konce souboru. Skutečná hodnota EOFje závislá na implementaci a musí být záporná (ale běžně je −1, například v glibc ). Funkce čtení bloků vrací počet načtených bajtů, a pokud je tento počet menší, než bylo požadováno, bylo dosaženo konce souboru nebo došlo k chybě (kontrola errnonebo vyhrazená funkce, která ferrorje často vyžadována k určení které).

Znak EOF

Vstup z terminálu nikdy „nekončí“ (pokud není zařízení odpojeno), ale je užitečné zadat do terminálu více než jeden „soubor“, takže je vyhrazena sekvence kláves pro označení konce vstupu. V systému UNIX překlad klávesových zkratek na EOF provádí ovladač terminálu, takže program nemusí rozlišovat terminály od jiných vstupních souborů. Ve výchozím nastavení ovladač převede znak Control-D na začátku řádku na indikátor konce souboru. Chcete-li do vstupního proudu vložit skutečný znak Control-D (ASCII 04), předchází jej uživatel znakem příkazu "citát" (obvykle Control-V ). AmigaDOS je podobný, ale používá Control- \ místo Control-D.

V DOS a Windows (a v CP/M a mnoha operačních systémech DEC, jako je RT-11 nebo VMS ) čtení z terminálu nikdy nevytvoří EOF. Místo toho programy rozpoznávají, že zdrojem je terminál (nebo jiné „znakové zařízení“) a interpretují daný vyhrazený znak nebo sekvenci jako indikátor konce souboru; nejčastěji se jedná o ASCII Control-Z , kód 26. Některé programy MS-DOS, včetně částí prostředí Microsoft MS-DOS shell ( COMMAND.COM ) a obslužných programů operačního systému (například EDLIN ), ošetřují Control-Z v textovém souboru jako označení konce smysluplných dat a/nebo při psaní textového souboru na konec připojte Control-Z. Stalo se tak ze dvou důvodů:

  • Zpětná kompatibilita s CP/M . Systém souborů CP/M zaznamenával pouze délky souborů v násobcích 128bajtových „záznamů“, takže podle konvence byl pro označení konce smysluplných dat použit znak Control-Z, pokud končil uprostřed záznamu. MS-DOS souborový systém byl vždy zaznamenán přesný byte délky souborů, takže to nikdy nebylo nutné na MS-DOS.
  • Umožňuje programům používat stejný kód ke čtení vstupu z terminálu i textového souboru.

Ve standardu magnetické pásky ANSI X3.27-1969 byl konec souboru označen značkou pásky , která se skládala z mezery přibližně 3,5 palce pásky následované jediným bajtem obsahujícím znak 13 (hex) pro devět stop pásky a 17 (osmičkové) pro sedmistopé pásky . End-of-pásky , zkráceně EOT , bylo indikováno dvěma pásky značkami. To byl standard používaný například u IBM 360 . Reflexní proužek , který byl použit oznámit hrozící fyzické konec pásky se také nazývá EOT markeru.

Viz také

Reference

  1. ^ Wayne Pollock. „Shell Here Document Overview“ . hccfl.edu. Archivovány od originálu na 2014-05-29 . Citováno 2014-05-28 .
  2. ^ "Knihovna GNU C" . www.gnu.org .
  3. ^ "Přenos pásky (Pre-1977): Exchange Media: MARC 21 Specifikace pro strukturu záznamů, sady znaků a Exchange Media (Kongresová knihovna)" . www.loc.gov .