[Primipassi] Scusate l'ignoranza, ma...
Claudio Cicali
c.cicali@mclink.it
Mar 5 Giu 2001 19:29:02 CEST
In data 04:51 PM 6/5/01 +0200, Elisabetta Galli ha scritto:
>...cosa vuol dire esattamente "_IO_stdin", "_IO_stdout" e "_IO_stderr"?
>scusate se la domanda e' stupida, ma sono appena agli inizi :)
>Grazie e ciao!
Non so a quale contesto ti riferisci, ma tento comunque una risposta.
In genere, nella programmazione, ci si riferisce a:
stdin = Standard Input (device per i dati in ingresso (es: tastiera))
stdout = Standard Output (device per i dati in uscita (es: console))
stderr = Standard Error (device per le segnalazioni di errore (es: console))
"device", se non lo sai, potrebbe essere tradotto con "dispositivo".
In Unix, tali device, sono considerati e gestiti come file.
Per questo motivo potrebbe essere possibile fare in modo che quello
che un programma si aspetta in input dallo stdin, gli venga invece
passato da un file. Tale operazione si chiama "redirezione" e si
effettua da console utilizzando il "<" ">"
Esempio banale:
Il comando ls, come sai, visualizza la lista dei file in una directory.
L'output del programma e' notoriamente lo Standard Output, ovvero la
console.
E' possibile fare in modo, ridirigendo lo standard output, che la
lista vada a finire in un file, invece che venir visualizzata.
bash:$ ls > filedioutput.txt
In questo modo ho rediretto lo standard output su un file.
E' possibile redirigere anche lo standard input.
Per l'esempio utilizziamo il programma "sort", che accetta da
standard input una lista di dati da ordinare. E' possibile ordinare
il contenuto di un file, semplicemente redirigendo lo standard
input da un file, in questo modo:
bash:$ sort < filedaordinare.txt
Combinando i due esempi, facciamo in modo di ordinare un file e di
mettere il risultato dell'operazione in un altro file:
bash:$ sort < filedaordinare.txt > fileordinato.txt
Una nota finale per stderr:
Generalmente, visto che sono praticamente dei file, il sistema
operativo assegna degli "handle" di file speciali ai tre signori
in questione. In particolare l'handle per stderr e' 2.
Se si volesse redirigere lo stderr, occorrerebbe scrivere:
mio_programma 2> logerrori.txt
Spero di essere stato sufficientemente chiaro.
ciao
--
Claudio Cicali aka FleXer
c.cicali@mclink.it
http://www.flexer.it
GPG Key Fingerprint = 2E12 64D5 E5F5 2883 0472 4CFF 3682 E786 555D 25CE
Maggiori informazioni sulla lista
primipassi