caso di successo, e -1 in caso di errore, nel qual caso \var{errno} assumerà
i valori:
\begin{errlist}
- \item[\errcode{ESRCH}] Il processo selezionato non esiste.
- \item[\errcode{EPERM}] In alcune implementazioni viene restituito quando il
+ \item[\errcode{ESRCH}] il processo selezionato non esiste.
+ \item[\errcode{EPERM}] in alcune implementazioni viene restituito quando il
processo selezionato non fa parte della stessa sessione del processo
corrente.
\end{errlist}
\bodydesc{La funzione ritorna il valore del nuovo \textit{process group}, e
-1 in caso di errore, nel qual caso \var{errno} assumerà i valori:
\begin{errlist}
- \item[\errcode{ESRCH}] Il processo selezionato non esiste.
- \item[\errcode{EPERM}] Il cambiamento non è consentito.
- \item[\errcode{EACCES}] Il processo ha già eseguito una \func{exec}.
- \item[\errcode{EINVAL}] Il valore di \param{pgid} è negativo.
+ \item[\errcode{ESRCH}] il processo selezionato non esiste.
+ \item[\errcode{EPERM}] il cambiamento non è consentito.
+ \item[\errcode{EACCES}] il processo ha già eseguito una \func{exec}.
+ \item[\errcode{EINVAL}] il valore di \param{pgid} è negativo.
\end{errlist}
}
\end{prototype}
A tale scopo lo standard POSIX.1 prevede che ad ogni sessione possa essere
associato un terminale di controllo; in Linux questo viene realizzato
mantenendo fra gli attributi di ciascun processo anche qual'è il suo terminale
-di controllo.\footnote{Lo standard POSIX.1 non specifica nulla riguardo
+di controllo.\footnote{lo standard POSIX.1 non specifica nulla riguardo
l'implementazione; in Linux anch'esso viene mantenuto nella solita struttura
\struct{task\_struct}, nel campo \var{tty}.} In generale ogni processo
eredita dal padre, insieme al \acr{pgid} e al \acr{sid} anche il terminale di
\bodydesc{La funzione restituisce 0 in caso di successo, e -1 in caso di
errore, nel qual caso \var{errno} assumerà i valori:
\begin{errlist}
- \item[\errcode{ENOTTY}] Il file \param{fd} non corrisponde al terminale di
+ \item[\errcode{ENOTTY}] il file \param{fd} non corrisponde al terminale di
controllo del processo chiamante.
- \item[\errcode{ENOSYS}] Il sistema non supporta il job control.
- \item[\errcode{EPERM}] Il \textit{process group} specificato non è nella
+ \item[\errcode{ENOSYS}] il sistema non supporta il job control.
+ \item[\errcode{EPERM}] il \textit{process group} specificato non è nella
stessa sessione del processo chiamante.
\end{errlist}
ed inoltre \errval{EBADF} ed \errval{EINVAL}.
gruppo di \textit{foreground}, e -1 in caso di errore, nel qual caso
\var{errno} assumerà i valori:
\begin{errlist}
- \item[\errcode{ENOTTY}] Non c'è un terminale di controllo o \param{fd} non
+ \item[\errcode{ENOTTY}] non c'è un terminale di controllo o \param{fd} non
corrisponde al terminale di controllo del processo chiamante.
\end{errlist}
ed inoltre \errval{EBADF} ed \errval{ENOSYS}.
distribuzione \textit{Slackware}, come alcune distribuzioni su dischetto, ed
altre distribuzioni dedicate a compiti limitati e specifici.} viene usata
la procedura di avvio di System V; questa prevede che \cmd{init} legga dal
-file di configurazione \file{/etc/inittab} quali programmi devono essere
+file di configurazione \conffile{/etc/inittab} quali programmi devono essere
lanciati, ed in quali modalità, a seconda del cosiddetto \textit{run level},
anch'esso definito nello stesso file.
tutto ripetuto per ciascuno dei terminali che si hanno a disposizione (o per
un certo numero di essi, nel caso delle console virtuali), secondo quanto
indicato dall'amministratore nel file di configurazione del programma,
-\file{/etc/inittab}.
+\conffile{/etc/inittab}.
Quando viene lanciato da \cmd{init} il programma parte con i privilegi di
amministratore e con un ambiente vuoto; \cmd{getty} si cura di chiamare
Questi programmi, che devono essere eseguiti in modalità non interattiva e
senza nessun intervento dell'utente, sono normalmente chiamati
\textsl{demoni}, (o \textit{daemons}), nome ispirato dagli omonimi spiritelli
-che svolgevano compiti vari, di cui parlava Socrate (che sosteneva di averne
-uno al suo servizio).\footnote{NdT. ricontrollare, i miei ricordi di filosofia
- sono piuttosto datati.}
+della mitologia greca che svolgevano compiti che gli dei trovavano noiosi, di
+cui parla anche Socrate (che sosteneva di averne uno al suo servizio).
+
+%TODO ricontrollare, i miei ricordi di filosofia sono piuttosto datati.
Se però si lancia un programma demone dalla riga di comando in un sistema che
supporta, come Linux, il \textit{job control} esso verrà comunque associato ad
\item scartare.
\end{itemize*}
secondo le modalità che questo preferisce e che possono essere impostate
-attraverso il file di configurazione \file{/etc/syslog.conf} (maggiori
+attraverso il file di configurazione \conffile{/etc/syslog.conf} (maggiori
dettagli si possono trovare sulle pagine di manuale per questo file e per
\cmd{syslogd}).
\hline
\hline
\const{LOG\_AUTH} & Messaggi relativi ad autenticazione e sicurezza,
- obsoleto, è sostituito da \const{LOG\_AUTHPRIV}. \\
+ obsoleto, è sostituito da \const{LOG\_AUTHPRIV}.\\
\const{LOG\_AUTHPRIV} & Sostituisce \const{LOG\_AUTH}.\\
\const{LOG\_CRON} & Messaggi dei demoni di gestione dei comandi
programmati (\cmd{cron} e \cmd{at}).\\
\const{LOG\_DAEMON} & Demoni di sistema.\\
\const{LOG\_FTP} & Server FTP.\\
- \const{LOG\_KERN} & Messaggi del kernel\\
- \const{LOG\_LOCAL0} & Riservato all'amministratore per uso locale\\
+ \const{LOG\_KERN} & Messaggi del kernel.\\
+ \const{LOG\_LOCAL0} & Riservato all'amministratore per uso locale.\\
--- & \\
- \const{LOG\_LOCAL7} & Riservato all'amministratore per uso locale\\
- \const{LOG\_LPR} & Messaggi del sistema di gestione delle stampanti \\
- \const{LOG\_MAIL} & Messaggi del sistema di posta elettronica\\
+ \const{LOG\_LOCAL7} & Riservato all'amministratore per uso locale.\\
+ \const{LOG\_LPR} & Messaggi del sistema di gestione delle stampanti.\\
+ \const{LOG\_MAIL} & Messaggi del sistema di posta elettronica.\\
\const{LOG\_NEWS} & Messaggi del sistema di gestione delle news
- (USENET) \\
- \const{LOG\_SYSLOG} & Messaggi generati dallo stesso \cmd{syslogd}\\
- \const{LOG\_USER} & Messaggi generici a livello utente\\
- \const{LOG\_UUCP} & Messaggi del sistema UUCP\\
+ (USENET).\\
+ \const{LOG\_SYSLOG} & Messaggi generati dallo stesso \cmd{syslogd}.\\
+ \const{LOG\_USER} & Messaggi generici a livello utente.\\
+ \const{LOG\_UUCP} & Messaggi del sistema UUCP.\\
\hline
\end{tabular}
\caption{Valori possibili per l'argomento \param{facility} di \func{openlog}.}
\const{LOG\_NDELAY} & Sostituisce \const{LOG\_AUTH}.\\
\const{LOG\_NOWAIT} & Messaggi dei demoni di gestione dei comandi
programmati (\cmd{cron} e \cmd{at}).\\
-\const{LOG\_ODELAY} & .\\
+\const{LOG\_ODELAY} & \\
\const{LOG\_PERROR} & Stampa anche su \file{stderr}.\\
\const{LOG\_PID} & Inserisce nei messaggi il \acr{pid} del processo
- chiamante. \\
+ chiamante.\\
\hline
\end{tabular}
\caption{Valori possibili per l'argomento \param{option} di \func{openlog}.}
\textbf{Valore}& \textbf{Significato}\\
\hline
\hline
- \const{LOG\_EMERG} & Il sistema è inutilizzabile. \\
+ \const{LOG\_EMERG} & Il sistema è inutilizzabile.\\
\const{LOG\_ALERT} & C'è una emergenza che richiede intervento
immediato.\\
\const{LOG\_CRIT} & Si è in una condizione critica.\\
\const{LOG\_ERR} & Si è in una condizione di errore.\\
\const{LOG\_WARNING} & Messaggio di avvertimento.\\
\const{LOG\_NOTICE} & Notizia significativa relativa al comportamento.\\
- \const{LOG\_INFO} & Messaggio informativo. \\
+ \const{LOG\_INFO} & Messaggio informativo.\\
\const{LOG\_DEBUG} & Messaggio di debug.\\
\hline
\end{tabular}
\const{IGNBRK} & Ignora le condizioni di BREAK sull'input. Una
\textit{condizione di BREAK} è definita nel contesto di
una trasmissione seriale asincrona come una sequenza di
- bit nulli più lunga di un byte. \\
+ bit nulli più lunga di un byte.\\
\const{BRKINT} & Controlla la reazione ad un BREAK quando
\const{IGNBRK} non è impostato. Se \const{BRKINT} è
impostato il BREAK causa lo scarico delle code,
(\textit{carriage return}, \verb|'\r'|) viene scartato
dall'input. Può essere utile per i terminali che inviano
entrambi i caratteri di ritorno carrello e a capo
- (\textit{newline}, \verb|'\n'|). \\
+ (\textit{newline}, \verb|'\n'|).\\
\const{ICRNL} & Se impostato un carattere di ritorno carrello
(\verb|'\r'|) sul terminale viene automaticamente
trasformato in un a capo (\verb|'\n'|) sulla coda di
- input. \\
+ input.\\
\const{INLCR} & Se impostato il carattere di a capo
(\verb|'\n'|) viene automaticamente trasformato in un
ritorno carrello (\verb|'\r'|).\\
\const{IXOFF} & Se impostato abilita il controllo di flusso in
ingresso. Il computer emette un carattere di STOP per
bloccare l'input dal terminale e lo sblocca con il
- carattere START. \\
+ carattere START.\\
\const{IMAXBEL}& Se impostato fa suonare il cicalino se si riempie la cosa
di ingresso; in Linux non è implementato e il kernel si
comporta cose se fosse sempre impostato (è una estensione
- BSD). \\
+ BSD).\\
\hline
\end{tabular}
\caption{Costanti identificative dei vari bit del flag di controllo
\const{O\_NOBLOCK} si bloccherà il processo finché
non si è stabilita una connessione con il modem; inoltre
se viene rilevata una disconnessione viene inviato un
- segnale di
- \const{SIGHUP} al processo di controllo del terminale. La
- lettura su un terminale sconnesso comporta una condizione
- di \textit{end of file} e la scrittura un errore di
- \errcode{EIO}. \\
+ segnale di \const{SIGHUP} al processo di controllo del
+ terminale. La lettura su un terminale sconnesso comporta
+ una condizione di \textit{end of file} e la scrittura un
+ errore di \errcode{EIO}.\\
\const{HUPCL} & Se è impostato viene distaccata la connessione del
modem quando l'ultimo dei processi che ha ancora un file
aperto sul terminale lo chiude o esce.\\
parità. La reazione in caso di errori dipende dai
relativi valori per \var{c\_iflag}, riportati in
tab.~\ref{tab:sess_termios_iflag}. Se non è impostato i
- bit di parità non vengono
- generati e i caratteri non vengono controllati.\\
+ bit di parità non vengono generati e i caratteri non
+ vengono controllati.\\
\const{PARODD} & Ha senso solo se è attivo anche \const{PARENB}. Se
impostato viene usata una parità è dispari, altrimenti
viene usata una parità pari.\\
\const{CSIZE} & Maschera per i bit usati per specificare la dimensione
del carattere inviato lungo la linea di trasmissione, i
valore ne indica la lunghezza (in bit), ed i valori
- possibili sono \val{CS5}, \val{CS6},
- \val{CS7} e \val{CS8}
+ possibili sono \val{CS5}, \val{CS6}, \val{CS7} e \val{CS8}
corrispondenti ad un analogo numero di bit.\\
\const{CBAUD} & Maschera dei bit (4+1) usati per impostare della velocità
- della linea (il \textit{baud rate}) in ingresso.
- In Linux non è implementato in quanto viene
- usato un apposito campo di \struct{termios}.\\
+ della linea (il \textit{baud rate}) in ingresso; in Linux
+ non è implementato in quanto viene usato un apposito
+ campo di \struct{termios}.\\
\const{CBAUDEX}& Bit aggiuntivo per l'impostazione della velocità della
linea, per le stesse motivazioni del precedente non è
implementato in Linux.\\
\const{CIBAUD} & Maschera dei bit della velocità della linea in
- ingresso. Analogo a \const{CBAUD}, anch'esso in Linux è
- mantenuto in un apposito campo di \struct{termios}. \\
+ ingresso; analogo a \const{CBAUD}, anch'esso in Linux è
+ mantenuto in un apposito campo di \struct{termios}.\\
\const{CRTSCTS}& Abilita il controllo di flusso hardware sulla seriale,
attraverso l'utilizzo delle dei due fili di RTS e CTS.\\
\hline
cancellando l'ultimo carattere della riga corrente dallo
schermo; altrimenti il carattere è rimandato in eco per
mostrare quanto accaduto (usato per i terminali con
- l'uscita su una stampante). \\
+ l'uscita su una stampante).\\
\const{ECHOPRT}& Se impostato abilita la visualizzazione del carattere di
cancellazione in una modalità adatta ai terminali con
l'uscita su stampante; l'invio del carattere di ERASE
\const{ECHOE} e \const{ECHOPRT}.\\
\const{ECHONL} & Se impostato viene effettuato l'eco di un a
capo (\verb|\n|) anche se non è stato impostato
- \const{ECHO}. \\
+ \const{ECHO}.\\
\const{ECHOCTL}& Se impostato insieme ad \const{ECHO} i caratteri di
controllo ASCII (tranne TAB, NL, START, e STOP) sono
mostrati nella forma che prepone un ``\texttt{\circonf}''
\const{IEXTEN} & Abilita alcune estensioni previste dalla
implementazione. Deve essere impostato perché caratteri
speciali come EOL2, LNEXT, REPRINT e WERASE possano
- essere interpretati. \\
+ essere interpretati.\\
\const{NOFLSH} & Se impostato disabilita lo scarico delle code di ingresso
e uscita quando vengono emessi i segnali \const{SIGINT},
\const{SIGQUIT} e \const{SIGSUSP}.\\
\hline
\const{VINTR} &\texttt{0x03}&(\texttt{C-c})& Carattere di interrupt,
provoca l'emissione di
- \const{SIGINT}. \\
+ \const{SIGINT}.\\
\const{VQUIT} &\texttt{0x1C}&(\texttt{C-|})& Carattere di uscita provoca
l'emissione di
\const{SIGQUIT}.\\
\const{VEOL} &\texttt{0x00}& NUL & Carattere di fine riga. Agisce come
un a capo, ma non viene scartato ed
è letto come l'ultimo carattere
- nella riga. \\
+ nella riga.\\
\const{VREPRINT}&\texttt{0x12}&(\texttt{C-r})& Ristampa i caratteri non
- ancora letti. \\
+ ancora letti.\\
\const{VDISCARD}&\texttt{0x07}&(\texttt{C-o})& Non riconosciuto in Linux.\\
\const{VWERASE}&\texttt{0x17}&(\texttt{C-w})&Cancellazione di una
parola.\\
quotare il carattere
successivo che non viene
interpretato ma passato
- direttamente all'output. \\
+ direttamente all'output.\\
\const{VEOL2} &\texttt{0x00}& NUL & Ulteriore carattere di fine
riga. Ha lo stesso effetto di
\const{VEOL} ma può essere un
\bodydesc{Entrambe le funzioni restituiscono 0 in caso di successo e -1 in
caso di errore, nel qual caso \var{errno} assumerà i valori:
\begin{errlist}
- \item[\errcode{EINTR}] La funzione è stata interrotta.
+ \item[\errcode{EINTR}] la funzione è stata interrotta.
\end{errlist}
ed inoltre \errval{EBADF}, \errval{ENOTTY} ed \errval{EINVAL}.
}
\textbf{Valore}& \textbf{Significato}\\
\hline
\hline
- \const{TCSANOW} & Esegue i cambiamenti in maniera immediata. \\
+ \const{TCSANOW} & Esegue i cambiamenti in maniera immediata.\\
\const{TCSADRAIN}& I cambiamenti vengono eseguiti dopo aver atteso che
- tutto l'output presente sulle code è stato scritto. \\
+ tutto l'output presente sulle code è stato scritto.\\
\const{TCSAFLUSH}& È identico a \const{TCSADRAIN}, ma in più scarta
tutti i dati presenti sulla coda di input.\\
\hline
di code di ingresso ed uscita; in generale si fa riferimento ad esse con il
nome di \textsl{discipline di linea}.
-
Lo standard POSIX prevede alcune funzioni che permettono di intervenire
direttamente sulla gestione di quest'ultime e sull'interazione fra i dati in
ingresso ed uscita e le relative code. In generale tutte queste funzioni
sul terminale associato a \param{fd}; un valore nullo di \param{duration}
implica una durata del flusso fra 0.25 e 0.5 secondi, un valore diverso da
zero implica una durata pari a \code{duration*T} dove \code{T} è un valore
-compreso fra 0.25 e 0.5.\footnote{POSIX specifica il comportamento solo nel
- caso si sia impostato un valore nullo per \param{duration}; il comportamento
- negli altri casi può dipendere dalla implementazione.}
+compreso fra 0.25 e 0.5.\footnote{lo standard POSIX specifica il comportamento
+ solo nel caso si sia impostato un valore nullo per \param{duration}; il
+ comportamento negli altri casi può dipendere dalla implementazione.}
Le altre funzioni previste da POSIX servono a controllare il comportamento
dell'interazione fra le code associate al terminale e l'utente; la prima è
\textbf{Valore}& \textbf{Significato}\\
\hline
\hline
- \const{TCIFLUSH} & Cancella i dati sulla coda di ingresso. \\
+ \const{TCIFLUSH} & Cancella i dati sulla coda di ingresso.\\
\const{TCOFLUSH} & Cancella i dati sulla coda di uscita. \\
\const{TCIOFLUSH}& Cancella i dati su entrambe le code.\\
\hline
\const{TCOOFF}& Sospende l'output.\\
\const{TCOON} & Riprende un output precedentemente sospeso.\\
\const{TCIOFF}& Il sistema trasmette un carattere di STOP, che
- fa interrompere la trasmissione dei dati dal terminale. \\
+ fa interrompere la trasmissione dei dati dal terminale.\\
\const{TCION} & Il sistema trasmette un carattere di START, che
fa riprendere la trasmissione dei dati dal terminale.\\
\hline
\end{table}
+
\subsection{Operare in \textsl{modo non canonico}}
\label{sec:term_non_canonical}
\label{sec:sess_pty}
Qui vanno spiegati i terminali virtuali, \file{/dev/pty} e compagnia.
+% vedi man pts
+
-\subsection{La funzione \func{openpty}}
+\subsection{Allocazione dei terminale virtuali}
\label{sec:sess_openpty}
Qui vanno le cose su \func{openpty} e compagnia.
+% TODO le ioctl dei terminali
+% TODO trattare \func{posix\_openpt}
+
+
+
% LocalWords: kernel multitasking dell'I job control BSD POSIX shell sez group
% LocalWords: foreground process bg fg Di waitpid WUNTRACED pgrp session sched