%% fileio.tex (merge fileunix.tex - filestd.tex)
%%
-%% Copyright (C) 2000-2015 Simone Piccardi. Permission is granted to
+%% Copyright (C) 2000-2016 Simone Piccardi. Permission is granted to
%% copy, distribute and/or modify this document under the terms of the GNU Free
%% Documentation License, Version 1.1 or any later version published by the
%% Free Software Foundation; with the Invariant Sections being "Un preambolo",
impedendo ogni ulteriore operazione.
All'interno di ogni processo i file aperti sono identificati da un numero
-intero non negativo, che viene chiamato \textit{file descriptor}. Quando un
-file viene aperto la funzione \func{open} restituisce questo numero, tutte le
-ulteriori operazioni dovranno essere compiute specificando questo stesso
-numero come argomento alle varie funzioni dell'interfaccia.
+intero non negativo, che viene chiamato appunto \textit{file descriptor}.
+Quando un file viene aperto la funzione \func{open} restituisce questo numero,
+tutte le ulteriori operazioni dovranno essere compiute specificando questo
+stesso numero come argomento alle varie funzioni dell'interfaccia.
\itindbeg{process~table}
\itindbeg{file~table}
\centering
\includegraphics[width=12cm]{img/procfile}
\caption{Schema della architettura dell'accesso ai file attraverso
- l'interfaccia dei \textit{file descriptor}.}
+ l'interfaccia dei file descriptor.}
\label{fig:file_proc_file}
\end{figure}
\textit{file table}.
\end{itemize*}
-In questa infrastruttura un \textit{file descriptor} non è altro che l'intero
-positivo che indicizza quest'ultima tabella, e che consente di recuperare il
-puntatore alla struttura \kstruct{file} corrispondente al file aperto dal
-processo a cui era stato assegnato questo indice. Una volta ottenuta grazie al
-\textit{file descriptor} la struttura \kstruct{file} corrispondente al file
-voluto nella \textit{file table}, il kernel potrà usare le funzioni messe
-disposizione dal VFS per eseguire sul file tutte le operazioni necessarie.
+In questa infrastruttura un file descriptor non è altro che l'intero positivo
+che indicizza quest'ultima tabella, e che consente di recuperare il puntatore
+alla struttura \kstruct{file} corrispondente al file aperto dal processo a cui
+era stato assegnato questo indice. Una volta ottenuta grazie al file
+descriptor la struttura \kstruct{file} corrispondente al file voluto nella
+\textit{file table}, il kernel potrà usare le funzioni messe disposizione dal
+VFS per eseguire sul file tutte le operazioni necessarie.
Il meccanismo dell'apertura dei file prevede che venga sempre fornito il primo
-\textit{file descriptor} libero nella tabella, e per questo motivo essi
-vengono assegnati in successione tutte le volte che si apre un nuovo file,
-posto che non ne sia stato chiuso nessuno in precedenza.
+file descriptor libero nella tabella, e per questo motivo essi vengono
+assegnati in successione tutte le volte che si apre un nuovo file, posto che
+non ne sia stato chiuso nessuno in precedenza.
\itindbeg{standard~input}
\itindbeg{standard~output}
\textbf{File} & \textbf{Significato} \\
\hline
\hline
- \constd{STDIN\_FILENO} & \textit{file descriptor} dello \textit{standard
- input}.\\
- \constd{STDOUT\_FILENO} & \textit{file descriptor} dello \textit{standard
- output}.\\
- \constd{STDERR\_FILENO} & \textit{file descriptor} dello \textit{standard
- error}.\\
+ \constd{STDIN\_FILENO} & file descriptor dello \textit{standard input}.\\
+ \constd{STDOUT\_FILENO} & file descriptor dello \textit{standard output}.\\
+ \constd{STDERR\_FILENO} & file descriptor dello \textit{standard error}.\\
\hline
\end{tabular}
\caption{Costanti definite in \headfile{unistd.h} per i file standard.}
kernel queste operazioni vengono gestite direttamente dal sistema della
memoria virtuale, attraverso opportuni \textit{task} interni al kernel il cui
comportamento può essere controllato attraverso il file
-\sysctlfile{vm/bdflush}.\footnote{per il significato dei valori che si possono
+\sysctlfiled{vm/bdflush}.\footnote{per il significato dei valori che si possono
scrivere in questo file si consulti la documentazione allegata ai sorgenti
del kernel nel file \file{Documentation/sysctl/vm.txt}, trattandosi di
argomenti di natura sistemistica non li prenderemo in esame.} Si tenga
Un'ultima differenza fra le \textit{at-functions} e le funzioni tradizionali
di cui sono estensione è, come accennato in sez.~\ref{sec:file_temp_file},
-quella relativa a \funcm{utimensat} che non è propriamente una corrispondente
+quella relativa a \func{utimensat} che non è propriamente una corrispondente
esatta di \func{utimes} e \func{lutimes}, dato che questa funzione ha una
maggiore precisione nella indicazione dei tempi dei file, per i quali come per
\func{futimes}, si devono usare strutture \struct{timespec} che consentono una
\const{F\_GETPIPE\_SZ}. I processi non privilegiati\footnote{per la
precisione occorre la capacità \const{CAP\_SYS\_RESOURCE}.} non possono
impostare un valore valore superiore a quello indicato da
- \sysctlfile{fs/pipe-size-max}. Il comando è specifico di Linux, è
+ \sysctlfiled{fs/pipe-size-max}. Il comando è specifico di Linux, è
disponibile solo a partire dal kernel 2.6.35, ed è utilizzabile solo se si è
definita la macro \macro{\_GNU\_SOURCE}.
accesso.
Per ragioni storiche la struttura di dati che rappresenta uno \textit{stream}
-è stata chiamata \type{FILE}, questi oggetti sono creati dalle funzioni di
+è stata chiamata \typed{FILE}, questi oggetti sono creati dalle funzioni di
libreria e contengono tutte le informazioni necessarie a gestire le operazioni
sugli \textit{stream}, come la posizione corrente, lo stato del buffer e degli
indicatori di stato e di fine del file.
un filesystem indicizzato a 64 bit su una macchina con architettura a 32 bit,
questo può non essere possibile lo standard POSIX ha introdotto le nuove
funzioni \funcd{fgetpos} e \funcd{fsetpos}, che invece usano il nuovo tipo
-\type{fpos\_t}, ed i cui prototipi sono:
+\typed{fpos\_t}, ed i cui prototipi sono:
\begin{funcproto}{
\fhead{stdio.h}
\subsection{Gli \textit{stream} e i \textit{thread}}
\label{sec:file_stream_thread}
-\itindbeg{thread}
Gli \textit{stream} possono essere usati in applicazioni \textit{multi-thread}
allo stesso modo in cui sono usati nelle applicazioni normali, ma si deve
% TODO trattare \func{clearerr\_unlocked}
-\itindend{thread}
-
%%% Local Variables: