capacità, un accesso privilegiato.\footnote{dal kernel 3.6 sono state
introdotte delle contromisure, illustrate in
sez.~\ref{sec:procadv_security_misc}, che rendono impraticabili questo tipo
- di attacchi ma questa non è una buona scusa per ignorare il problema.}
+ di attacchi, ma questa non è una buona scusa per ignorare il problema.}
\itindend{symlink~attack}
\end{errlist}}
\end{funcproto}
-
Come per \func{mktemp} anche in questo caso \param{template} non può essere
una stringa costante. La funzione apre un file in lettura/scrittura con la
funzione \func{open}, usando l'opzione \const{O\_EXCL} (si veda
\func{mkstemp}.}
\end{funcproto}
\noindent la cui sola differenza è la presenza dell'ulteriore argomento
-\var{flags} che consente di specificare i flag da passare ad \func{open}
-nell'apertura del file.
+\var{flags} che consente di specificare alcuni ulteriori flag
+(\const{O\_APPEND}, \const{O\_CLOEXEC}, \const{O\_SYNC}, il cui significato
+vedremo in sez.~\ref{sec:file_open_close}) da passare ad \func{open}
+nell'apertura del file.
+
+Di queste due funzioni sono state poi introdotte a partire dalla \acr{glibc}
+2.11 due varianti, \funcd{mkstemps} e \funcd{mkostemps} che consentono di
+indicare anche un suffisso, i loro prototipo sono:
+
+\begin{funcproto}{
+\fhead{stlib.h}
+\fdecl{int mkstemps(char *template, int suffixlen)}
+\fdesc{Apre un file temporaneo.}
+\fdecl{int mkostemps(char *template, int suffixlen, int flags)}
+\fdesc{Apre un file temporaneo.}
+}
+
+{Le funzioni hanno gli stessi valori di ritorno e gli stessi errori di
+ \func{mkstemp} con lo stesso significato tranne \errval{EINVAL} che viene
+ restituito se \param{template} non è di lunghezza pari ad almeno
+ $6+$\param{suffixlen} ed i 6 caratteri prima del suffisso non sono
+ \code{XXXXXX}.}
+\end{funcproto}
+Le due funzioni, estensione non standard delle \acr{glibc}, sono identiche a
+\funcd{mkstemp} e \funcd{mkostemp}, ma consentono di avere un nome del file
+nella forma \texttt{prefissoXXXXXXsuffisso} dove la lunghezza del suffisso
+deve essere indicata con \param{suffixlen}.
-In OpenBSD è stata introdotta un'altra funzione simile alle precedenti,
-\funcd{mkdtemp}, che crea invece una directory temporanea;\footnote{la
- funzione è stata introdotta nella \acr{glibc} a partire dalla versione
- 2.1.91 ed inserita nello standard POSIX.1-2008.} il suo prototipo è:
+Infine con OpenBSD è stata introdotta un'altra funzione simile alle
+precedenti, \funcd{mkdtemp}, che crea invece una directory
+temporanea;\footnote{la funzione è stata introdotta nella \acr{glibc} a
+ partire dalla versione 2.1.91 ed inserita nello standard POSIX.1-2008.} il
+suo prototipo è:
\begin{funcproto}{
\fhead{stlib.h}
La funzione crea una directory temporanea il cui nome è ottenuto sostituendo
le \code{XXXXXX} finali di \param{template} con permessi \code{0700} (si veda
sez.~\ref{sec:file_perm_overview} per i dettagli). Dato che la creazione della
-directory è sempre esclusiva i precedenti problemi di \textit{race condition}
+directory è sempre atomica i precedenti problemi di \textit{race condition}
non si pongono.
Quelli che invece sono stati, almeno a grandi linee, standardizzati, sono i
nomi dei segnali e le costanti di preprocessore che li identificano, che sono
-tutte nella forma \texttt{SIG\textsl{NOME}}, e sono queste che devono essere
+tutte nella forma \texttt{SIG\textsl{nome}}, e sono queste che devono essere
usate nei programmi. Come tutti gli altri nomi e le funzioni che concernono i
segnali, esse sono definite nell'header di sistema \headfile{signal.h}.