Qualcuno ha detto che ci sono tre diversi file che un processo apre sempre. Cosa significa questo? Quali file sono?
Qualcuno ha detto che ci sono tre diversi file che un processo apre sempre. Cosa significa questo? Quali file sono?
Risposte:
I file aperti non sono file sul disco. Sono gli stream (pseudo file), stdin (0), stdout (1) e stderr (2). Ecco l'estratto pertinente dello standard POSIX :
Un file con buffering associato viene chiamato stream e viene dichiarato come puntatore a un FILE di tipo definito. La funzione fopen () crea alcuni dati descrittivi per un flusso e restituisce un puntatore per designare il flusso in tutte le ulteriori transazioni. Normalmente, ci sono tre flussi aperti con puntatori costanti dichiarati nell'intestazione e associati ai file aperti standard.
All'avvio del programma, tre flussi devono essere predefiniti e non devono essere aperti in modo esplicito: input standard (per leggere input convenzionali), output standard (per scrivere output convenzionali) ed errore standard (per scrivere output diagnostici). Se aperto, il flusso di errori standard non è completamente bufferizzato; i flussi di input standard e output standard sono completamente bufferizzati se e solo se il flusso può essere determinato in modo da non fare riferimento a un dispositivo interattivo.