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.
V závislosti na tom, jak program spustíte, může být zdrojem pro stdin:
<) lze obsahu souboru „vnutit“ programu jako vstup.|) se výstup jednoho programu stane standardním vstupem druhého.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í. |
Místo psaní na klávesnici pošleme soubor do programu:
sort < seznam_jmen.txt
Tímto způsobem program sort přečte obsah souboru přes svůj stdin, seřadí ho a vypíše na obrazovku.
Toto je základní kámen linuxové filozofie:
cat data.txt | grep „Praha“
Zde výstup příkazu cat teče do stdin příkazu grep.
Téměř každý programovací jazyk má zabudovanou cestu, jak číst ze stdin:
input() nebo sys.stdin.read()scanf() nebo fgets(stdin, …)System.inTato 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.
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í.