GNU/Linux >> Tutoriels Linux >  >> Linux

Linux - Le numéro majeur Tty de votre Unix ?

Je travaille actuellement sur une bibliothèque de ports série qui utilise déjà des frameworks spéciaux pour obtenir des informations sur les ports série du système. Bien que les ports série soient une conception fondamentale sous Unix - comme le prouve une réponse comme celle-ci - j'ai pensé qu'un bon moyen de tester si un fichier est un port série est de tester le mode principal du périphérique de caractères
et de vérifier s'il s'agit en fait d'un TTY ou pas.

En rampant sur Internet, je n'ai trouvé aucune documentation parlant des principaux modes de TTY s à travers les unités. Eh bien, il n'y a qu'une seule page de manuel Linux indiquant que ptmx a le mode majeur 5.

Bien que j'aie déjà posé des questions sur les détails d'implémentation du périphérique de caractères tty basé sur cette question Stack Overflow
, j'ai pensé que je pourrais demander à la communauté Unix Stack Exchange de savoir comment les valeurs tty sont stables dans toutes les versions d'Unix.

Donc, je demande votre aide pour construire une base de connaissances du mode Major de tous vos fichiers tty
sur votre système, c'est-à-dire :quel est le mode majeur de

  • de vrais ports série ?
  • pseudo terminal (PTS ) ports ?
  • FTDI USB Ports série ?
  • autre USB Ports série ?

Pour obtenir les valeurs du mode majeur d'un périphérique de caractères, vous devez utiliser :

% stat -f " * %N: %Hr%n" /dev/tty* /dev/pts/*
 * /dev/ttys001: 16
                 ^^- major mode

ou en utilisant le bon vieux ls :

% ls -l /dev/ttys001
crw--w----  1 <user>  tty   16,   1 Apr 30 03:25 /dev/ttys001
                major mode -^^   ^^- minor mode

Vous pouvez mettre des informations dans la réponse de votre choix ou étendre la réponse du wiki communautaire avec des informations supplémentaires.

Réponse acceptée :

Unix version 7 (1979) :

# ls -l /dev/console /dev/tty?*
crw--w--w- 1 root    0,  0 Sep 22 06:46 /dev/console
crw-rw-r-- 1 root    0,  1 Sep 22 05:47 /dev/tty1
crw-rw-r-- 1 root    0,  2 Sep 22 05:47 /dev/tty2

(pas encore de pty)

Linux 3.2.0 (debian wheezy).

Remarque :vous pouvez également les trouver en recherchant /dev pour appartenant au groupe tty et dialout . C'est un truc Debian.

  • Consoles virtuelles
    • /dev/tty[0-9]* :4
  • Ports série réels :
    • /dev/ttyS[0-9]+ :4
  • Pseudo-terminaux :
    • /dev/pts/[0-9]+ :136
    • /dev/pts/ptmx :5
  • Port série USB FTDI :
    • /dev/ttyUSB[0-9]+ :188
  • Port série USB :(AVR intégré USB/Arduino Uno )
    • /dev/ttyACM[0-9]+ :166

Linux 3.4.0 (Android 4.4.2/Nexus 5)

Remarque :a tous ceux de Linux plus :

  • ttyACM (contrôle du modem cellulaire)
    • (pas de /dev entrée, apparemment):166
  • ttyHSL (Bluetooth)
    • /dev/ttyHSL0 :247
  • ttyHS (Bluetooth)
    • /dev/ttyHS99 :248

Darwin 13.1.0 (Mac OS 10.9.2) :

  • Ports série réels :
    • /dev/ttys[0-9a-f] :4
  • Pseudo-terminaux :
    • /dev/ttys[0-9]{3} :16
  • Port série USB FTDI :
    • /dev/tty.usbserial.* :18
  • Port série USB :(AVR intégré USB/Arduino Uno )
    • /dev/tty.usbmodem.* :18

Solaris 10 x86/amd64 :

  • Pseudo-terminaux :

    • /dev/pty[p-r][0-9a-f] (maître pty):25
    • /dev/tty[p-r][0-9a-f] (esclave pty):26
    • /dev/pts/[0-9]+ :24
    • /dev/ptmx :23
  • Périphériques série :

    • /dev/tty[abc...] alias /dev/term/[abc...] ou /dev/tty0[012..] (série uart, également):106
    • aussi comme /dev/ttyd[012...] mais avec une interface différente (cadran, modem) également sur 106 mais mineurs élevés.
Connexe :Linux – PHP fonctionne en ligne de commande mais pas dans le navigateur ?

OpenBSD 6.0

Comme documenté dans le commentaire dans /dev/MAKEDEV

  • Ports série PC/AT UART :
    • /dev/tty[0-7][0-9a-f] :8
    • /dev/cua[0-7][0-9a-f] :8
  • Ports série Cyclades :
    • /dev/ttyc* :38
    • /dev/cuac* :38
  • Ports série Virtio :
    • /dev/ttyVI* :94
  • Ports série USB :
    • /dev/ttyU[0-3] :66
    • /dev/cuaU[0-3] :66
  • terminaux wscons :
    • /dev/tty[C-J][0-b] :12
  • Pseudo terminal maître et esclave (non UNIX 98)
    • /dev/pty[p-zP-T][0-9a-zA-Z] :6
    • /dev/tty[p-zP-T][0-9a-zA-Z] :5

FreeBSD 10.0 et TrueOS

FreeBSD (et ses dérivés tels que TrueOS) est l'endroit où votre idée montre un défaut fatal. Il n'y a pas schéma de numéros de périphérique majeur + mineur dans FreeBSD.

Le devfs pseudo-système de fichiers sur FreeBSD, monté de manière conventionnelle sur /dev , n'utilise pas du tout un système majeur + mineur pour regrouper les appareils en classes " majeures ". Plutôt, le rdev pour le périphérique est le même que son numéro d'i-node dans le pseudo-système de fichiers, les i-nodes étant simplement attribués dans l'ordre croissant au fur et à mesure que les nœuds de périphérique sont générés, en fonction du matériel exact sur la machine à ce moment-là.

Ainsi, le numéro de périphérique ne peut pas être utilisé comme raccourci pour isatty() .


Linux
  1. Utilisez le client de messagerie Alpine dans votre terminal Linux

  2. Linux vs Unix :Quelle est la différence ?

  3. Comment changer la couleur de votre terminal Linux

  4. La philosophie Linux est-elle toujours d'actualité en 2019 ?

  5. Lecture et écriture sur le port série en C sous Linux

Exécutez la ligne de commande Linux sur votre iPad

Détendez-vous au coin du feu sur votre terminal Linux

Quelle est la différence entre Linux et Unix ?

Comment trouver le numéro de port d'un service sous Linux

Comment vérifier tous les ports ouverts de votre système Linux

Linux contre Unix