X-Git-Url: https://gapil.gnulinux.it/gitweb/?p=gapil.git;a=blobdiff_plain;f=session.tex;h=9bff74f5564b25e0ba8ef3b3096d88f8ff58d393;hp=ee8b2d8ec9c3f5765213f648a0bf4579f8f3d727;hb=da0899b61653d07d75c8df134906261f1afd2485;hpb=9aad56ecd71e4f36e09f001cdd30b2106beec5c4 diff --git a/session.tex b/session.tex index ee8b2d8..9bff74f 100644 --- a/session.tex +++ b/session.tex @@ -124,7 +124,7 @@ dal comando \cmd{ps} usando l'opzione \cmd{-j}. Un \textit{process group} è pertanto definito da tutti i processi che hanno lo stesso \acr{pgid}; è possibile leggere il valore di questo identificatore con -le funzioni \func{getpgid} e \func{getpgrp},\footnote{\func{getpgrp} è +le funzioni \funcd{getpgid} e \funcd{getpgrp},\footnote{\func{getpgrp} è definita nello standard POSIX.1, mentre \func{getpgid} è richiesta da SVr4.} i cui prototipi sono: \begin{functions} @@ -148,7 +148,7 @@ restituisce il \acr{pgid} del processo corrente; \func{getpgrp} equivalente a \code{getpgid(0)}. In maniera analoga l'identificatore della sessione può essere letto dalla -funzione \func{getsid}, che però nelle \acr{glibc}\footnote{la system call è +funzione \funcd{getsid}, che però nelle \acr{glibc}\footnote{la system call è stata introdotta in Linux a partire dalla versione 1.3.44, il supporto nelle librerie del C è iniziato dalla versione 5.2.19. La funzione non è prevista da POSIX.1, che parla solo di processi leader di sessione, e non di @@ -181,7 +181,7 @@ Ciascun raggruppamento di processi ha sempre un processo principale, il cosiddetto \textit{process group leader}, che è identificato dall'avere un \acr{pgid} uguale al suo \acr{pid}, in genere questo è il primo processo del raggruppamento, che si incarica di lanciare tutti gli altri. Un nuovo -raggruppamento si crea con la funzione \func{setpgrp},\footnote{questa è la +raggruppamento si crea con la funzione \funcd{setpgrp},\footnote{questa è la definizione di POSIX.1, BSD definisce una funzione con lo stesso nome, che però è identica a \func{setpgid}; nelle \acr{glibc} viene sempre usata sempre questa definizione, a meno di non richiedere esplicitamente la @@ -198,7 +198,7 @@ La funzione, assegnando al \acr{pgid} il valore del \acr{pid} processo corrente, rende questo \textit{group leader} di un nuovo raggruppamento, tutti i successivi processi da esso creati apparterranno (a meno di non cambiare di nuovo il \acr{pgid}) al nuovo raggruppamento. È possibile invece spostare un -processo da un raggruppamento ad un altro con la funzione \func{setpgid}, il +processo da un raggruppamento ad un altro con la funzione \funcd{setpgid}, il cui prototipo è: \begin{prototype}{unistd.h}{int setpgid(pid\_t pid, pid\_t pgid)} Assegna al \acr{pgid} del processo \param{pid} il valore \param{pgid}. @@ -239,7 +239,7 @@ comunque entrambe per evitare di esporsi ad una race condition. Si noti come nessuna delle funzioni esaminate finora permetta di spostare un processo da una sessione ad un altra; infatti l'unico modo di far cambiare sessione ad un processo è quello di crearne una nuova con l'uso di -\func{setsid}; il suo prototipo è: +\funcd{setsid}; il suo prototipo è: \begin{prototype}{unistd.h}{pid\_t setsid(void)} Crea una nuova sessione sul processo corrente impostandone \acr{sid} e \acr{pgid}. @@ -319,7 +319,7 @@ associato ai file standard (di input, output ed error) dei processi nella sessione, ma solo quelli che fanno parte del cosiddetto raggruppamento di \textit{foreground}, possono leggere e scrivere in certo istante. Per impostare il raggruppamento di \textit{foreground} di un terminale si usa la -funzione \func{tcsetpgrp}, il cui prototipo è: +funzione \funcd{tcsetpgrp}, il cui prototipo è: \begin{functions} \headdecl{unistd.h} \headdecl{termios.h} @@ -358,7 +358,7 @@ condizioni di errore.\footnote{la shell in genere notifica comunque un funzioni di lettura e scrittura falliranno con un errore di \errcode{EIO}. Un processo può controllare qual'è il gruppo di \textit{foreground} associato -ad un terminale con la funzione \func{tcgetpgrp}, il cui prototipo è: +ad un terminale con la funzione \funcd{tcgetpgrp}, il cui prototipo è: \begin{functions} \headdecl{unistd.h} \headdecl{termios.h} @@ -644,7 +644,7 @@ occorrer In Linux buona parte di queste azioni possono venire eseguite invocando la -funzione \func{daemon}, introdotta per la prima volta in BSD4.4; il suo +funzione \funcd{daemon}, introdotta per la prima volta in BSD4.4; il suo prototipo è: \begin{prototype}{unistd.h}{int daemon(int nochdir, int noclose)} Esegue le operazioni che distaccano il processo dal terminale di controllo e @@ -720,7 +720,7 @@ funzionano solo localmente; se si vogliono inviare i messaggi ad un'altro sistema occorre farlo esplicitamente con un socket\index{socket} UDP, o utilizzare le capacità di reinvio del servizio. -La prima funzione definita dall'interfaccia è \func{openlog}, che apre una +La prima funzione definita dall'interfaccia è \funcd{openlog}, che apre una connessione al servizio di \textit{syslog}; essa in generale non è necessaria per l'uso del servizio, ma permette di impostare alcuni valori che controllano gli effetti delle chiamate successive; il suo prototipo è: @@ -808,7 +808,7 @@ con un OR aritmetico di una qualunque delle costanti riportate in \label{tab:sess_openlog_option} \end{table} -La funzione che si usa per generare un messaggio è \func{syslog}, dato che +La funzione che si usa per generare un messaggio è \funcd{syslog}, dato che l'uso di \func{openlog} è opzionale, sarà quest'ultima a provvede a chiamare la prima qualora ciò non sia stato fatto (nel qual caso il valore di \param{ident} è nullo). Il suo prototipo è: @@ -866,7 +866,7 @@ con la maschera binaria delle costanti di \tabref{tab:sess_syslog_facility}. \label{tab:sess_syslog_priority} \end{table} -Una ulteriore funzione, \func{setlogmask}, permette di filtrare +Una ulteriore funzione, \funcd{setlogmask}, permette di filtrare preliminarmente i messaggi in base alla loro priorità; il suo prototipo è: \begin{prototype}{syslog.h}{int setlogmask(int mask)} @@ -1005,7 +1005,7 @@ Alcune di queste funzioni prendono come argomento un file descriptor (in origine molte operazioni venivano effettuate con \func{ioctl}), ma ovviamente possono essere usate solo con file che corrispondano effettivamente ad un terminale (altrimenti si otterrà un errore di \errcode{ENOTTY}); questo può -essere evitato utilizzando la funzione \func{isatty}, il cui prototipo è: +essere evitato utilizzando la funzione \funcd{isatty}, il cui prototipo è: \begin{prototype}{unistd.h}{int isatty(int desc)} Controlla se il file descriptor \param{desc} è un terminale. @@ -1014,7 +1014,7 @@ essere evitato utilizzando la funzione \func{isatty}, il cui prototipo terminale, 0 altrimenti.} \end{prototype} -Un'altra funzione che fornisce informazioni su un terminale è \func{ttyname}, +Un'altra funzione che fornisce informazioni su un terminale è \funcd{ttyname}, che permette di ottenere il nome del terminale associato ad un file descriptor; il suo prototipo è: \begin{prototype}{unistd.h}{char *ttyname(int desc)} @@ -1028,7 +1028,7 @@ descriptor; il suo prototipo Si tenga presente che la funzione restituisce un indirizzo di dati statici, che pertanto possono essere sovrascritti da successive chiamate. Una funzione -funzione analoga, anch'essa prevista da POSIX.1, è \func{ctermid}, il cui +funzione analoga, anch'essa prevista da POSIX.1, è \funcd{ctermid}, il cui prototipo è: \begin{prototype}{stdio.h}{char *ctermid(char *s)} @@ -1047,7 +1047,7 @@ precedenza ed essere lunga almeno indica la dimensione che deve avere una stringa per poter contenere il nome di un terminale.} caratteri. -Esiste infine una versione rientrante \func{ttyname\_r} della funzione +Esiste infine una versione rientrante \funcd{ttyname\_r} della funzione \func{ttyname}, che non presenta il problema dell'uso di una zona di memoria statica; il suo prototipo è: \begin{prototype}{unistd.h}{int ttyname\_r(int desc, char *buff, size\_t len)} @@ -1568,10 +1568,11 @@ esempio \const{VINTR}, \const{VSUSP}, e \const{VQUIT} richiedono sia settato settato \const{IEXTEN}. In ogni caso quando vengono attivati i caratteri vengono interpretati e non sono passati sulla coda di ingresso. -Per leggere ed scrivere tutte le impostazioni dei terminali lo standard POSIX -prevede due funzioni, \func{tcgetattr} e \func{tcsetattr}; entrambe utilizzano -come argomento un puntatore ad struttura \struct{termios} che sarà quella in -cui andranno immagazzinate le impostazioni, il loro prototipo è: +Per leggere ed scrivere tutte le varie impostazioni dei terminali viste finora +lo standard POSIX prevede due funzioni che utilizzano come argomento un +puntatore ad una struttura \struct{termios} che sarà quella in cui andranno +immagazzinate le impostazioni. Le funzioni sono \funcd{tcgetattr} e +\funcd{tcsetattr} ed il loro prototipo è: \begin{functions} \headdecl{unistd.h} \headdecl{termios.h} @@ -1741,8 +1742,8 @@ devono essere acceduti direttamente ma solo attraverso le apposite funzioni di interfaccia provviste da POSIX.1. Lo standard prevede due funzioni per scrivere la velocità delle linee seriali, -\func{cfsetispeed} per la velocità della linea di ingresso e -\func{cfsetospeed} per la velocità della linea di uscita; i loro prototipi +\funcd{cfsetispeed} per la velocità della linea di ingresso e +\funcd{cfsetospeed} per la velocità della linea di uscita; i loro prototipi sono: \begin{functions} \headdecl{unistd.h} @@ -1770,9 +1771,12 @@ altre versioni di librerie possono utilizzare dei valori diversi; per questo POSIX.1 prevede una serie di costanti che però servono solo per specificare le velocità tipiche delle linee seriali: \begin{verbatim} - B0 B50 B75 B110 B134 B150 - B200 B300 B600 B1200 B1800 B2400 - B4800 B9600 B19200 B38400 B57600 B115200 + B0 B50 B75 + B110 B134 B150 + B200 B300 B600 + B1200 B1800 B2400 + B4800 B9600 B19200 + B38400 B57600 B115200 B230400 B460800 \end{verbatim} @@ -1835,7 +1839,7 @@ illustrato in \secref{sec:sess_ctrl_term}.\footnote{con la stessa eccezione, processo chiamante.} Una prima funzione, che è efficace solo in caso di terminali seriali asincroni -(non fa niente per tutti gli altri terminali), è \func{tcsendbreak}; il suo +(non fa niente per tutti gli altri terminali), è \funcd{tcsendbreak}; il suo prototipo è: \begin{functions} \headdecl{unistd.h} @@ -1859,7 +1863,7 @@ compreso fra 0.25 e 0.5.\footnote{POSIX specifica il comportamento solo nel Le altre funzioni previste da POSIX servono a controllare il comportamento dell'interazione fra le code associate al terminale e l'utente; la prima è -\func{tcdrain}, il cui prototipo è: +\funcd{tcdrain}, il cui prototipo è: \begin{functions} \headdecl{unistd.h} \headdecl{termios.h} @@ -1878,7 +1882,7 @@ di uscita non % chiamate devono essere protette con dei % gestori di cancellazione. -Una seconda funzione, \func{tcflush}, permette svuotare immediatamente le code +Una seconda funzione, \funcd{tcflush}, permette svuotare immediatamente le code di cancellando tutti i dati presenti al loro interno; il suo prototipo è: \begin{functions} \headdecl{unistd.h} \headdecl{termios.h} @@ -1918,7 +1922,7 @@ di uscita canceller L'ultima funzione dell'interfaccia che interviene sulla disciplina di linea è -\func{tcflow}, che viene usata per sospendere la trasmissione e la ricezione +\funcd{tcflow}, che viene usata per sospendere la trasmissione e la ricezione dei dati sul terminale; il suo prototipo è: \begin{functions} \headdecl{unistd.h}