\documentclass{report}
\usepackage[utf8]{inputenc}
\usepackage[T1]{fontenc}
\usepackage{textcomp}
\usepackage{geometry}
\geometry{top=15mm, bottom=15mm, left=1cm, right=1cm}
\usepackage[french]{babel}
\usepackage{pslatex}
\usepackage[colorlinks=true,urlcolor=black]{hyperref}
\usepackage{graphicx}
\usepackage{fancyhdr}
\pagestyle{fancy}
\renewcommand{\footrulewidth}{0.4pt}
\fancyfoot[L]{Uubu.fr}
\fancyfoot[R]{mer. févr. 3 10:03:17 CET 2016}
\lfoot{\Large \textit{Uubu.fr}}
\hypersetup{pdfinfo={
Title={pty},
Author={Sylvain Girod},
Creator={Bash script from uubu.fr's format version 1},
Producer={Bash script and PDFLaTeX},
Subject={Interfaces de pseudo-terminaux},
CreationDate={D:20160203100317},
ModDate={D:20160203100317},
Keywords={Linux}
}}
\begin{document}
 
\begin{center}
{\Huge pty }
\end{center}
\vspace{1cm}
 
\begin{flushleft}
 
{\large Interfaces de pseudo-terminaux}
 
\vspace{10mm}
 
\hspace{1mm}  Un pseudoterminal (abrégé pty) est une paire de périphériques caractères virtuels qui fournissent un canal de communication bidirectionnelle. Un bout du canal est appelé le maître, l'autre est appelé esclave. Le bout esclave du pseudo-terminal fournit une interface qui se comporte exactement comme un terminal classique. Un processus qui s'attend à être connecté à un terminal peut ouvrir le bout esclave d'un pseudo-terminal puis être piloté par un programme qui a ouvert le bout maître. Tout ce qui est écrit sur le maître est fourni au processus sur l'esclave comme si c'était écrit sur un terminal. Par exemple, écrire le caractère d'interruption (généralement ctrl-C) sur le périphérique maître cause l'envoi d'un signal d'interruption SIGINT au groupe de processus qui est connecté à l'esclave. Réciproquement, tout ce qui est écrit sur l'esclave peut être lu par le processus qui connecté au maître. Les pseudo-terminaux sont utilisé par des application telles que des services de login à distance (ssh, rlogin, telnet), les émulateurs de terminaux, script, screen, et expect.
\vspace{5mm} \\
 
 
\hspace{1mm}  Historiquement, 2 API de pseudo-terminaux ont évolués: BSD et System V. SUSv1 a standardisé une API de pseudo-terminal basée sur l'interface System V, et cette API doit être utilisée dans tous les nouveaux programmes qui utilisent des pseudo-terminaux.
\vspace{5mm} \\
 
 
\hspace{1mm}  Linux fournit à la fois des pseudo-terminaux de type BSD et de type System V (standardisés). Les terminaux de type System V sont souvent appelés pseudo-terminaux UNIX 98 sur les systèmes Linux. Depuis Linux 2.6.4, les pseudo-terminaux de type BSD sont considérés obsolètes.
\vspace{5mm} \\
 
 
\vspace{1cm}{\huge Pseudoterminaux UNIX 98 }
 
\
 
\hspace{1mm}  Un maître est ouvert en appelant posix\_openpt(3). Cette fonction ouvre le périphérique de clonage de maître, /dev/ptmx; Une fois initialisé le périphérique, changé le propriétaire et les permissions du périphérique esclave avec grantpt(3), et déverrouillé l'esclave avec unlockpt(3), le périphérique esclave correspondant peut être ouvert en passant le nom renvoyé par ptsname(3) dans un appel à open(2).
\vspace{5mm} \\
 
 
\hspace{1mm}  Le noyau Linux impose une limite au nombre de pseudo-terminaux UNIX 98 disponibles. La limite est ajustable de façon dynamique par le fichier /proc/sys/kernel/pty/max, et le fichier /proc/sys/kernel/pty/nr indique combien de peudoterminaux sont actuellement utilisés.
\vspace{5mm} \\
 
 
\vspace{1cm}{\huge Pseudoterminaux BSD }
 
\
 
\hspace{1mm}  Les pseudo-terminaux de type BSD sont fournis par paires précréées, avec des noms sous la forme /dev/ptyXY (maître) et /dev/ttyXY (esclave), ou X est une lettre de l'ensemble de 16 caractères [p-za-e], et Y est une lettre de l'ensemble de 16 caractères [0-9a-f]. Un processus trouve un pseudo-terminal inutilisé en essayant d'ouvrir chaque maître de pseudo-terminal avec open(2) jusqu'à ce qu'une ouverture réussisse.
\vspace{5mm} \\
 
 
\vspace{1cm}{\huge Fichiers }
 
\
 
\begin{description} \normalsize
\item[\hspace{1mm} /dev/ptmx]{Périphérique de clonage de maître UNIX 98}
\item[\hspace{1mm} /dev/pts/0 /dev/pts/1 /dev/pts/2 /dev/pts/3 /dev/pts/ptmx]{Périphériques esclaves UNIX 98}
\item[\hspace{1mm} /dev/pty\texttt{[}p-za-e\texttt{]}\texttt{[}0-9a-f\texttt{]}]{périphériques maîtres BSD}
\item[\hspace{1mm} /dev/ttyS0 /dev/ttyS1 /dev/ttyS2 /dev/ttyS3 /dev/ttyS4 /dev/ttyS5 /dev/ttyS6 /dev/ttyS7 /dev/ttyS8 /dev/ttyS9]{périphériques esclaves BSD}
\end{description}
 
\vspace{1cm}{\huge Notes }
 
\
 
\hspace{1mm}  Une description de l'ioctl TIOCPKT qui contrôle l'opération en mode paquet, se trouve dans tty\_ioctl(4).
\vspace{5mm} \\
 
\end{flushleft}
\end{document}
