Obsah

stdin (Standard Input)

stdin je standardní komunikační kanál, přes který proces přijímá data. V technické dokumentaci a programování se mu přiřazuje tzv. deskriptor souboru (file descriptor) s hodnotou 0.

1. Zdroje vstupu pro stdin

V závislosti na tom, jak program spustíte, může být zdrojem pro stdin:

2. Tři pilíře standardních proudů

stdin nikdy nefunguje osamoceně, je součástí trojice proudů:

Proud Název Deskriptor Účel
stdin Standard Input 0 Příjem dat (vstup).
stdout Standard Output 1 Výpis výsledků (výstup).
stderr Standard Error 2 Výpis chybových hlášení.

3. Přesměrování a Pipeline v praxi

Přesměrování ze souboru (Redirection)

Místo psaní na klávesnici pošleme soubor do programu:

Tímto způsobem program sort přečte obsah souboru přes svůj stdin, seřadí ho a vypíše na obrazovku.

Propojení programů (Pipelining)

Toto je základní kámen linuxové filozofie:

Zde výstup příkazu cat teče do stdin příkazu grep.

4. stdin v programování

Téměř každý programovací jazyk má zabudovanou cestu, jak číst ze stdin:

Tato abstrakce je velmi mocná, protože programátor nemusí řešit, jestli data píše člověk na klávesnici, nebo jestli přicházejí z gigabajtového logovacího souboru přes rouru.

5. Ukončení vstupu (EOF)

Když program čte ze stdin (např. v terminálu), potřebuje vědět, kdy data končí. K tomu slouží znak EOF (End Of File).

Zajímavost: Mnoho začátečníků se snaží v interaktivních programech zadat heslo přes stdin pomocí echo „heslo“ | program. To však může být nebezpečné, protože heslo zůstane v historii příkazů. Bezpečnější programy proto pro hesla často stdin obcházejí a čtou přímo z terminálu, aby zabránily nechtěnému přesměrování.

Zpět na Linux