1.11.3 Input, output ed exit status

Un’applicazione, in genere, si aspetta dei dati di ingresso, ovvero ciò che è chiamato input, che possono essere quelli sui quali essa eseguirà le operazioni oppure possono servire per fornirle delle indicazioni sulla modalità di esecuzione delle operazioni stesse. La stessa applicazione fornirà poi dei risultati, ovvero l’output, che potrà essere visualizzato sullo schermo, scritto all’interno di un file, inviato alla stampante, ...

In realtà i sistemi Unix-like associano ad ogni processo un canale di input, uno di output ed uno di error attraverso i quali il processo comunica con il mondo esterno: il canale di input permette la ricezione delle informazioni da parte del processo, il canale di output è quello attraverso il quale le informazioni vengono emesse dal processo dopo la sua elaborazione e quello di ouput è il canale per mezzo del quale il processo comunica eventuali errori. Il canale di input è per default collegato alla alla tastiera, mentre i canali di output e di error sono collegati allo schermo. In questo modo l’input al programma viene fornito per mezzo della tastiera, mentre l’output e l’error del programma vengono visualizzate sullo schermo.

Quando un programma termina la sua esecuzione, esso restituisce (al processo che lo ha lanciato in esecuzione) un valore di uscita, detto exit status, cioè un valore numerico di un byte, che generalmente indica se il programma ha svolto correttamente o meno il suo compito, secondo la convenzione di considerare terminata con successo (successful) l’esecuzione di un programma che restituisce un exit status uguale a 0 e terminata con un errore altrimenti.