OS X, comme d'autres systèmes UNIX-iod, implémente deux systèmes de pseudo-terminaux : le pty et le ptmx (les liens sont vers les sources du noyau utilisé dans 10.9.5).
Ils offrent tous deux la même fonctionnalité : ils permettent à un programme (par exemple, un émulateur de terminal) d'ouvrir (le côté maître) un pseudo-terminal et de lancer ensuite d'autres programmes (par exemple, un shell) qui s'exécutent "dans" (le côté esclave) ce même pseudo-terminal.
Le système pty est plus ancien. Les nœuds de périphériques pour les côtés maîtres de ses pseudo-terminaux correspondent au schéma suivant /dev/pty[pqrstuvw][0123456789abcdef]
. Les côtés esclaves utilisent les nœuds correspondants nommés avec tty
( /dev/tty[pqrstuvw][0123456789abcdef]
). Ces nœuds de périphériques sont alloués au démarrage du système (c'est-à-dire qu'ils sont toujours présents dans /dev/
).
Le système ptmx est plus récent et utilise un seul nœud de dispositif maître, /dev/ptmx
et utilise /dev/ttys[0-9][0-9][0-9]
pour les côtés esclaves. Les nœuds de dispositif des esclaves sont alloués de manière dynamique (ainsi, seuls les nœuds encore utilisés existent dans la base de données des esclaves). /dev/
).
Fondamentalement, tout programme qui utilise les API de pseudo-terminaux "modernes" finira automatiquement par utiliser des pseudo-terminaux basés sur Ptmx. Les programmes utilisant les anciennes interfaces pseduo-terminales utiliseront des pseudo-terminaux basés sur pty.
Dans votre cas, lors de la création de ses enfants, vos sshd utilisait le nouveau système ptmx (ou une interface comme openpty qui l'utilise "sous le capot"), mais l'ancêtre pertinent de ces shells Root utilisait l'ancien système pty. Si vous êtes curieux, vous pouvez suivre les PIDs parents (PPID, la troisième colonne de votre sortie) pour trouver le programme ancêtre qui a engendré la ligne de processus qui a fini par exécuter ces shells Root (le trait d'union indique que ce sont des shells de connexion).
En outre, d'autres systèmes peuvent utiliser des variantes des noms de périphériques. Certains systèmes peuvent aller au-delà de 0-f pour les noms de pty, et certains systèmes utilisent /dev/pts/<digits>
(c'est-à-dire dans un sous-répertoire au lieu de les mettre tous dans /dev
et de devoir utiliser trois chiffres pour ne pas entrer en conflit avec les ttys0
- ttys9
les nœuds esclaves du système pty).