Canali standard

Da Andreabont's Wiki.
Pipe stdio example.png

Nei sistemi operativi unix-like i canali standard sono dei dispositivi logici che vengono forniti dal sistema operativo ad ogni processo per permettere la comunicazione testuale tra il processo stesso e l'ambiente operativo. Dato che nei sistemi di stampo unix tutto è rappresentabile da un file, lo sono anche i canali standard. Ogni processo al momento della creazione apre automaticamente i file descriptor per i suoi canali standard.

Ci sono 3 canali standard, uno per mandare del testo al processo (standard input) e due per leggere il testo scritto dal processo (standard output e standard error)

File descriptor Canale standard
0 Standard input (stdin)
1 Standard output (stdout)
2 Standard error (stderr)

Forza il buffer

E' possibile usare il comando stdbuf per forzare il buffer di un eseguibile indicato (per esempio per annullarlo) dei tre canali standard.

Opzione Significato
-i, --input=MODE Gestisci buffer dello standard input
-o, --output=MODE Gestisci buffer dello standard output
-e, --error=MODE Gestisci buffer dello standard error

MODE può essere la dimensione del buffer (0 per disabilitarlo) oppure L per indicare il buffer basato sulla linea (non valido per lo standard input)

tail -f access.log | stdbuf -oL cut -d ' ' -f1 | uniq

Tee

ls -l | tee file_output.txt | less

Collegamenti esterni