Apre il file specificato da \param{path} associandolo allo stream
specificato da \param{stream}, se questo è già aperto prima lo chiude.
- \bodydesc{Le funzioni ritornano un puntatore valido in caso di
- successo e \macro{NULL} in caso di errore, in tal caso \var{errno}
- viene impostata al valore ricevuto dalla funzione sottostante di cui è
- fallita l'esecuzione.
+ \bodydesc{Le funzioni ritornano un puntatore valido in caso di successo e
+ \macro{NULL} in caso di errore, in tal caso \var{errno} assumerà il valore
+ ricevuto dalla funzione sottostante di cui è fallita l'esecuzione.
Gli errori pertanto possono essere quelli di \code{malloc} per tutte
e tre le funzioni, quelli \func{open} per \func{fopen}, quelli di
Dato che le funzioni dell'interfaccia degli stream sono funzioni di libreria
che si appoggiano a delle system call, esse non impostano direttamente la
-variabile \var{errno}, che mantiene il valore impostato dalla system call che ha
-riportato l'errore.
+variabile \var{errno}, che mantiene il valore impostato dalla system call che
+ha riportato l'errore.
Siccome la condizione di end-of-file è anch'essa segnalata come errore, nasce
il problema di come distinguerla da un errore effettivo; basarsi solo sul
valore di ritorno della funzione e controllare il valore di \var{errno}
-infatti non basta, dato che quest'ultimo potrebbe essere stato impostato in una
-altra occasione, (si veda \secref{sec:sys_errno} per i dettagli del
+infatti non basta, dato che quest'ultimo potrebbe essere stato impostato in
+una altra occasione, (si veda \secref{sec:sys_errno} per i dettagli del
funzionamento di \var{errno}).
Per questo motivo tutte le implementazioni delle librerie standard
\funcdecl{int getc(FILE *stream)} Legge un byte da \param{stream} e lo
restituisce come intero. In genere è implementata come una macro.
-
+
\funcdecl{int fgetc(FILE *stream)} Legge un byte da \param{stream} e lo
- restituisce come intero. È una sempre una funzione.
+ restituisce come intero. È sempre una funzione.
\funcdecl{int getchar(void)} Equivalente a \code{getc(stdin)}.
Legge il file descriptor sottostante lo stream \param{stream}.
\bodydesc{Restituisce il numero del file descriptor in caso di successo, e
- -1 qualora \param{stream} non sia valido, nel qual caso imposta \var{errno}
- a \macro{EBADF}.}
+ -1 qualora \param{stream} non sia valido, nel qual caso imposta
+ \var{errno} a \macro{EBADF}.}
\end{prototype}
\noindent ed in questo modo diventa possibile usare direttamente \func{fcntl}.