Inoltre come già accennato, la directory di lavoro corrente è una proprietà
associata al singolo processo; questo significa che quando si lavora con i
-\textit{thread} questa sarà sempre la stessa per tutti \textit{thread}, ed un
-cabiamento di directory di lavoro effettuato all'interno di un \textit{thread}
-verrà applicato a tutti, non esiste quindi con le funzioni classiche un modo
-semplice per far si che i singoli \textit{thread} possano aprire file usando
-una propria directory per risolvere i \textit{pathname} relativi.
+\textit{thread} questa sarà sempre la stessa per tutti \textit{thread}, per
+cui un cabiamento di directory di lavoro effettuato all'interno di un
+\textit{thread} verrà applicato anche a tutti gli altri; non esiste quindi con
+le funzioni classiche un modo semplice per far si che i singoli
+\textit{thread} possano aprire file usando una propria directory per risolvere
+i \textit{pathname} relativi.
Per risolvere questi problemi, riprendendo una interfaccia già presente in
Solaris, a fianco delle normali funzioni che operano sui file (come
\func{open}, \func{mkdir}, ecc.) sono state introdotte delle ulteriori
-funzioni di sistema, chiamate ``\textit{at-functions}'' in quanto quasi tutte
-sono contraddistinte dal suffisso \texttt{at}, che permettono l'apertura di un
-file (o le rispettive altre operazioni) usando un \textit{pathname} relativo
-ad una directory specificata.\footnote{l'introduzione è avvenuta su proposta
- dello sviluppatore principale della \acr{glibc} Urlich Drepper e le
- corrispondenti \textit{system call} sono state inserite nel kernel a partire
- dalla versione 2.6.16, in precedenza era disponibile una emulazione che, sia
- pure con prestazioni inferiori, funzionava facendo ricorso all'uso del
- filesystem \textit{proc} con l'apertura del file attraverso il riferimento a
+funzioni di sistema, chiamate genericamente ``\textit{at-functions}'' in
+quanto usualmente contraddistinte dal suffisso \texttt{at}, che permettono
+l'apertura di un file (o le rispettive altre operazioni) usando un
+\textit{pathname} relativo ad una directory
+specificata.\footnote{l'introduzione è avvenuta su proposta dello sviluppatore
+ principale della \acr{glibc} Urlich Drepper e le corrispondenti
+ \textit{system call} sono state inserite nel kernel a partire dalla versione
+ 2.6.16, in precedenza era disponibile una emulazione che, sia pure con
+ prestazioni inferiori, funzionava facendo ricorso all'uso del filesystem
+ \textit{proc} con l'apertura del file attraverso il riferimento a
\textit{pathname} del tipo di \texttt{/proc/self/fd/dirfd/relative\_path}.}
Benché queste funzioni non siano presenti negli standard tradizionali esse
Il comportamento di \func{openat} è del tutto analogo a quello di \func{open},
con la sola eccezione del fatto che se per l'argomento \param{pathname} si
utilizza un \textit{pathname} relativo questo, sarà risolto rispetto alla
-directory indicata da \param{dirfd}. Qualora invece si usi un
+directory indicata da \param{dirfd}; qualora invece si usi un
\textit{pathname} assoluto \param{dirfd} verrà semplicemente ignorato. Infine
-se per \param{dirfd} si usa il valore speciale \constd{AT\_FDCWD}, la
+se per \param{dirfd} si usa il valore speciale \constd{AT\_FDCWD} la
risoluzione sarà effettuata rispetto alla directory di lavoro corrente del
-processo. Si tenga presente però che questa, come le altre costanti
-\texttt{AT\_*}, è definita in \headfile{fcntl.h}, pertanto se la si vuole
-usare occorrerà includere comunque questo file, anche per le funzioni che non
-sono definite in esso.
+processo. Questa, come le altre costanti \texttt{AT\_*}, è definita in
+\headfile{fcntl.h}, per cui per usarla occorrerà includere comunque questo
+file, anche per le funzioni che non sono definite in esso.
-Si tenga comunque presente che l'uso di \func{openat} non risolve in generale
-tutte le possibili \textit{race condition} legati all'apertura di un file,
-dopo un eventuale controllo di accesso o esistenza, ma consente comunque di
-difendersi da tutti gli attacchi eseguiti modificando le componenti superiori
-del suo \textit{pathname}. Inoltre una ...
+Si tenga presente che l'uso di \func{openat} non risolve in generale tutte le
+possibili \textit{race condition} legate all'apertura di un file dopo un
+eventuale controllo di accesso o esistenza, ma consente comunque di difendersi
+da tutti gli attacchi eseguiti modificando le componenti superiori del suo
+\textit{pathname}. Inoltre una ...
Così come il comportamento, anche i valori di ritorno e le condizioni di
errore delle nuove funzioni sono gli stessi delle funzioni classiche, agli
% TODO manca prototipo di execveat, introdotta nel 3.19, vedi
% https://lwn.net/Articles/626150/ cerca anche fexecve
+% TODO: trattare i nuovi AT_flags quando e se arriveranno, vedi
+% https://lwn.net/Articles/767547/
+
Per tutte le funzioni che lo prevedono, a parte \func{unlinkat} e
\funcd{faccessat}, l'ulteriore argomento è stato introdotto solo per fornire