Ancora fcntl
authorSimone Piccardi <piccardi@gnulinux.it>
Tue, 14 Feb 2012 09:05:56 +0000 (09:05 +0000)
committerSimone Piccardi <piccardi@gnulinux.it>
Tue, 14 Feb 2012 09:05:56 +0000 (09:05 +0000)
fileio.tex

index 27681b709da283536a52675d8c09d117ece8c4d0..7859510a1cd41c39d53b5ed680aeea31254c7227 100644 (file)
@@ -1961,7 +1961,7 @@ per \var{cmd} è riportata di seguito:
     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
@@ -1981,20 +1981,30 @@ per \var{cmd} è riportata di seguito:
     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
@@ -2002,17 +2012,16 @@ per \var{cmd} è riportata di seguito:
   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
@@ -4019,8 +4028,8 @@ con uno dei valori \const{FSETLOCKING\_INTERNAL} o
 % 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