%% session.tex
%%
-%% Copyright (C) 2000-2007 Simone Piccardi. Permission is granted to
+%% Copyright (C) 2000-2010 Simone Piccardi. Permission is granted to
%% copy, distribute and/or modify this document under the terms of the GNU Free
%% Documentation License, Version 1.1 or any later version published by the
%% Free Software Foundation; with the Invariant Sections being "Un preambolo",
funzionalità della shell infatti c'è anche quella di consentire di concatenare
più programmi in una sola riga di comando con le pipe, ed in tal caso verranno
eseguiti più programmi, inoltre, anche quando si invoca un singolo programma,
-questo potrà sempre lanciare sottoprocessi per eseguire dei compiti specifici.
+questo potrà sempre lanciare sotto-processi per eseguire dei compiti specifici.
Per questo l'esecuzione di un comando può originare più di un processo; quindi
nella gestione del job control non si può far riferimento ai singoli processi.
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}
\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}.
il programma), per evitare che la directory da cui si è lanciato il processo
resti in uso e non sia possibile rimuoverla o smontare il filesystem che la
contiene.
-\item Impostare la maschera dei permessi (di solito con \code{umask(0)}) in
- modo da non essere dipendenti dal valore ereditato da chi ha lanciato
- originariamente il processo.
+\item Impostare la \itindex{umask} maschera dei permessi (di solito con
+ \code{umask(0)}) in modo da non essere dipendenti dal valore ereditato da
+ chi ha lanciato originariamente il processo.
\item Chiudere tutti i file aperti che non servono più (in generale tutti); in
particolare vanno chiusi i file standard che di norma sono ancora associati
al terminale (un'altra opzione è quella di redirigerli verso
che indica la dimensione che deve avere una stringa per poter contenere il
nome di un terminale.} caratteri.
-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 è:
+Esiste infine una versione \index{funzioni!rientranti} 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)}
Restituisce il nome del terminale associato al file \param{desc}.
\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}.
}
\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}
+
+
+
+% TODO materiale sulle seriali
+% vedi http://www.easysw.com/~mike/serial/serial.html
+% TODO materiale generico sul layer TTY
+% vedi http://www.linusakesson.net/programming/tty/index.php
% LocalWords: kernel multitasking dell'I job control BSD POSIX shell sez group