X-Git-Url: https://gapil.gnulinux.it/gitweb/?p=gapil.git;a=blobdiff_plain;f=fileio.tex;h=2c11011106a007099daab0112c4178c3455ebfee;hp=16a8ca824f86999010a18662f48d15c36df3c9d5;hb=2270d0dd8cf9460e3aef8d5ffa2bf5c825707e58;hpb=be0113897fdc6774f0dcc3f9c91fe5e76c5dd0a5 diff --git a/fileio.tex b/fileio.tex index 16a8ca8..2c11011 100644 --- a/fileio.tex +++ b/fileio.tex @@ -1,6 +1,6 @@ %% 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", @@ -59,10 +59,10 @@ file dovrà essere chiuso, e questo chiuderà il canale di comunicazione 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} @@ -109,7 +109,7 @@ particolare: \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} @@ -133,18 +133,18 @@ essenziali come: \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} @@ -178,12 +178,9 @@ tab.~\ref{tab:file_std_files}. \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.} @@ -1471,7 +1468,7 @@ scarico dei dati ad intervalli di tempo fissi. Con le nuove versioni del 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 @@ -1861,7 +1858,7 @@ costanti utilizzabili per i valori di \param{flags}. 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 @@ -2219,7 +2216,7 @@ il nome indicato nel precedente prototipo), è riportata di seguito: \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}. @@ -2462,7 +2459,7 @@ concorrente ed in sez.~\ref{sec:file_access_control} per il controllo di 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. @@ -2940,7 +2937,7 @@ intero di tipo \ctyp{long}. Dato che in certi casi, ad esempio quando si usa 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} @@ -4075,7 +4072,6 @@ compresi gli eventuali caratteri rimandati indietro con \func{ungetc}. \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 @@ -4197,8 +4193,6 @@ con uno dei valori \const{FSETLOCKING\_INTERNAL} o % TODO trattare \func{clearerr\_unlocked} -\itindend{thread} - %%% Local Variables: