GNU/Linux >> Tutoriales Linux >  >> Linux

Linux:¿el número principal de Tty de su Unix?

Actualmente estoy trabajando en una biblioteca de puertos serie que ya utiliza marcos especiales para obtener información sobre los puertos serie del sistema. Aunque los puertos seriales son un diseño fundamental en Unix, como lo demuestra una respuesta como esta, pensé que una buena manera de probar si un archivo es un puerto serial es probar el modo principal del dispositivo de caracteres
y verificar si esto es realmente un TTY o no.

Rastreando en Internet, no pude encontrar ninguna documentación que hablara sobre los principales modos de TTY s a través de unices. Bueno, solo hay una página de manual de Linux que indica que ptmx tiene el modo principal 5.

Aunque ya pregunté acerca de los detalles de implementación del dispositivo de caracteres tty basado en esta pregunta de Stack Overflow
, pensé que podría preguntarle a la comunidad de Unix Stack Exchange para averiguar cómo Los valores tty son estables en todas las variantes de Unix.

Por lo tanto, solicito su ayuda para crear una base de conocimiento del modo principal de todos sus archivos tty
en su(s) sistema(s), es decir:¿cuál es el modo principal de

?
  • puertos serie reales?
  • pseudo terminal (PTS ) puertos?
  • FTDI USB ¿Puertos serie?
  • otro USB ¿Puertos serie?

Para obtener los valores para el modo principal de un dispositivo de caracteres, deberá buscar usando:

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

o usando el viejo ls :

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

Puede poner información en su propia respuesta o ampliar la respuesta wiki de la comunidad con información adicional.

Respuesta aceptada:

Unix versión 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

(no hay pty todavía)

Linux 3.2.0 (debian sibilante).

Nota:también puede encontrarlos buscando /dev para propiedad del grupo tty y dialout . Eso es algo de Debian.

  • Consolas virtuales
    • /dev/tty[0-9]* :4
  • Puertos serie reales:
    • /dev/ttyS[0-9]+ :4
  • Pseudoterminales:
    • /dev/pts/[0-9]+ :136
    • /dev/pts/ptmx :5
  • Puerto serie USB FTDI:
    • /dev/ttyUSB[0-9]+ :188
  • Puerto serie USB:(AVR integrado USB/Arduino Uno )
    • /dev/ttyACM[0-9]+ :166

Linux 3.4.0 (Android 4.4.2 / Nexus 5)

Nota:tiene todos los de Linux más:

  • ttyACM (control de módem celular)
    • (sin /dev entrada, aparentemente):166
  • ttyHSL (Bluetooth)
    • /dev/ttyHSL0 :247
  • ttyHS (Bluetooth)
    • /dev/ttyHS99 :248

Darwin 13.1.0 (MacOS 10.9.2):

  • Puertos serie reales:
    • /dev/ttys[0-9a-f] :4
  • Pseudoterminales:
    • /dev/ttys[0-9]{3} :16
  • Puerto serie USB FTDI:
    • /dev/tty.usbserial.* :18
  • Puerto serie USB:(AVR integrado USB/Arduino Uno )
    • /dev/tty.usbmodem.* :18

Solaris 10x86/amd64:

  • Pseudoterminales:

    • /dev/pty[p-r][0-9a-f] (maestro pty):25
    • /dev/tty[p-r][0-9a-f] (esclavo pty):26
    • /dev/pts/[0-9]+ :24
    • /dev/ptmx :23
  • Dispositivos serie:

    • /dev/tty[abc...] también conocido como /dev/term/[abc...] o /dev/tty0[012..] (serie uart, también):106
    • también como /dev/ttyd[012...] pero con diferente interfaz (dial, modem) también en 106 pero altos menores.
Relacionado:Linux:¿PHP funciona en la línea de comandos pero no en el navegador?

OpenBSD 6.0

Como se documenta en el comentario en /dev/MAKEDEV

  • Puertos seriales PC/AT UART:
    • /dev/tty[0-7][0-9a-f] :8
    • /dev/cua[0-7][0-9a-f] :8
  • Puertos seriales de las Cícladas:
    • /dev/ttyc* :38
    • /dev/cuac* :38
  • Puertos seriales Virtio:
    • /dev/ttyVI* :94
  • Puertos serie USB:
    • /dev/ttyU[0-3] :66
    • /dev/cuaU[0-3] :66
  • terminales wscons:
    • /dev/tty[C-J][0-b] :12
  • Pseudoterminal maestro y esclavo (no 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 y TrueOS

FreeBSD (y sus derivados como TrueOS) es donde su idea muestra un defecto fatal. No no hay esquema de número de dispositivo mayor+menor en FreeBSD.

Los devfs pseudo-sistema de archivos en FreeBSD, convencionalmente montado en /dev , no utiliza un sistema mayor+menor para agrupar dispositivos en clases "principales" en absoluto. Más bien, el rdev para el dispositivo es el mismo que su número de i-nodo en el pseudo-sistema de archivos, con los i-nodos simplemente asignados en orden ascendente a medida que se generan los nodos del dispositivo, dependiendo del hardware exacto en la máquina en cuestión en ese momento.

Por lo tanto, el número de dispositivo no se puede usar como acceso directo para isatty() .


Linux
  1. Linux vs Unix:¿Cuál es la diferencia?

  2. ¿Las verdades sobre el malware en Unix/Linux?

  3. Principales diferencias entre el kernel de Linux y UNIX

  4. Lectura y escritura en puerto serie en C en Linux

  5. Extraiga el número de serie de Linux sin sudo

Ejecute la línea de comandos de Linux en su iPad

Relájate junto al fuego en tu terminal Linux

¿Cuál es la diferencia entre Linux y Unix?

Cómo encontrar el número de puerto de un servicio en Linux

Cómo verificar todos los puertos abiertos en su sistema Linux

Linux frente a Unix