controllo di sessione; a ciascuno di essi è associato un identificatore
(un numero positivo analogo al \ids{PID}).} che è preposto alla ricezione
dei segnali \signal{SIGIO} (o qualunque altro segnale alternativo impostato
- con \const{F\_FSETSIG}) per gli eventi associati al file
+ con \const{F\_SETSIG}) per gli eventi associati al file
descriptor \param{fd}\footnote{il segnale viene usato sia per il
\textit{Signal Drive I/O}, che tratteremo in
sez.~\ref{sec:file_asyncronous_operation}, che dai vari meccanismi di
group} che riceverà i segnali \signal{SIGIO} e \signal{SIGURG} per gli
eventi associati al file descriptor \param{fd}, ritorna un valore nullo in
caso di successo o $-1$ in caso di errore. Come per \const{F\_GETOWN}, per
- impostare un \itindex{process~group} \textit{process group} si deve usare
+ indicare un \itindex{process~group} \textit{process group} si deve usare
per \param{arg} un valore negativo, il cui valore assoluto corrisponde
- all'identificatore del \itindex{process~group} \textit{process group}.
-\item[\const{F\_GETSIG}] restituisce il valore del segnale inviato quando ci
- sono dati disponibili in ingresso su un file descriptor aperto ed impostato
- per l'I/O asincrono (si veda sez.~\ref{sec:file_asyncronous_io}). Il valore 0
- indica il valore predefinito (che è \signal{SIGIO}), un valore diverso da
- zero indica il segnale richiesto, (che può essere anche lo stesso
- \signal{SIGIO}). In caso di errore ritorna $-1$.
+ all'identificatore del \itindex{process~group} \textit{process
+ group}. L'impostazione è soggetta alle stesse restrizioni presenti sulla
+ funzione \func{kill} (vedi sez.~\ref{sec:sig_kill_raise}), per cui in
+ sostanza un utente non privilegiato potrà cioè inviare i segnali solo ad un
+ processo che gli appartiene. Nel caso di \textit{thread},\footnote{in questo
+ caso si fa riferimento alla implementazione nativa di Linux delle NTPL,
+ vedi sez.~\ref{sec:linux_ntpl}. } quando si è impostato un segnale con
+ \const{F\_SETSIG}, un valore positivo di \param{arg} verrà interpretato come
+ indicante il \textit{Thread ID} che indica uno specifico \textit{thread} e
+ non come \textit{Process ID}, dato che in tal caso il \textit{thread}
+ principale mantiene un valore del \textit{Thread ID} uguale al \ids{PID}.
+\item[\const{F\_GETSIG}] restituisce il valore del segnale inviato quando un
+ file descriptor aperto ed impostato per l'I/O asincrono (si veda
+ sez.~\ref{sec:file_asyncronous_io}) è pronto per le operazioni di lettura o
+ scrittura. Il valore 0 indica il valore predefinito, che è \signal{SIGIO},
+ un valore diverso da zero indica il segnale richiesto, che può essere anche
+ lo stesso \signal{SIGIO}. In caso di errore ritorna $-1$.
\item[\const{F\_SETSIG}] imposta il segnale da inviare quando diventa
possibile effettuare I/O sul file descriptor in caso di I/O asincrono,
ritorna un valore nullo in caso di successo o $-1$ in caso di errore. Il
valore zero indica di usare il segnale predefinito, \signal{SIGIO}. Un altro
- valore diverso da zero (compreso lo stesso \signal{SIGIO}) specifica il
+ valore diverso da zero, compreso lo stesso \signal{SIGIO}, specifica il
segnale voluto; l'uso di un valore diverso da zero permette inoltre, se si è
installato il gestore del segnale come \var{sa\_sigaction} usando
\const{SA\_SIGINFO}, (vedi sez.~\ref{sec:sig_sigaction}), di rendere
generato il segnale attraverso i valori restituiti in \struct{siginfo\_t}
(come vedremo in sez.~\ref{sec:file_asyncronous_io}).\footnote{i due comandi
\const{F\_SETSIG} e \const{F\_GETSIG} sono una estensione specifica di
- Linux.}
+ Linux e sono utilizzabili solo se si è definita la macro
+ \macro{\_GNU\_SOURCE}.}
\item[\const{F\_SETLEASE}] imposta o rimuove un \itindex{file~lease}
- \textit{file lease}\footnote{questa è una nuova funzionalità, specifica di
- Linux, e presente solo a partire dai kernel della serie 2.4.x, in cui il
- processo che detiene un \textit{lease} su un file riceve una notifica
- qualora un altro processo cerca di eseguire una \func{open} o una
- \func{truncate} su di esso.} sul file descriptor \var{fd} a seconda del
- valore del terzo argomento, che in questo caso è un \ctyp{int}, ritorna un
- valore nullo in caso di successo o $-1$ in caso di errore. Questa
- funzionalità avanzata è trattata in dettaglio in
- sez.~\ref{sec:file_asyncronous_lease}.
+ \textit{file lease} sul file descriptor \var{fd} a seconda del valore del
+ terzo argomento, che in questo caso è un \ctyp{int}, ritorna un valore nullo
+ in caso di successo o $-1$ in caso di errore. Questa è una funzionalità
+ specifica di Linux (vedi sez.~\ref{sec:file_asyncronous_lease}) presente a
+ partire dai kernel della serie 2.4.x, in cui il processo che detiene un
+ \textit{lease} su un file riceve una notifica qualora un altro processo
+ cerchi di eseguire una \func{open} o una \func{truncate} su di esso.
\item[\const{F\_GETLEASE}] restituisce il tipo di \itindex{file~lease}
\textit{file lease} che il processo detiene nei confronti del file
descriptor \var{fd} o $-1$ in caso di errore. Con questo comando il terzo
% LocalWords: fwritable ext freading fwriting buffering setvbuf BUFSIZ setbuf
% LocalWords: IONBF IOLBF IOFBF setbuffer setlinebuf flbf fbufsize flushlbf hh
% LocalWords: fsync fpurge flockfile ftrylockfile funlockfile files fig flags
-% LocalWords: locking fsetlocking type Virtual operation dentry unistd sys AT
-% LocalWords: modification hole functions FSETSIG pathname EEXIST CREAT EINTR
+% LocalWords: locking fsetlocking type virtual operation dentry unistd sys AT
+% LocalWords: modification hole functions pathname EEXIST CREAT EINTR
% LocalWords: EISDIR EFBIG EOVERFLOW ELOOP NOFOLLOW ENODEV ENOENT ENOTDIR fork
% LocalWords: EMFILE ENAMETOOLONG ENFILE ENOMEM ENOSPC EROFS exec access RDWR
% LocalWords: RDONLY ioctl AND ACCMODE creation Denial Service DoS opendir NFS