linux – 你的Unix的TTY主要数量是多少?

我目前正在开发一个串口库,它已经使用特殊的框架来获取有关系统上串行端口的信息.虽然串口是Unix中的基本设计 – 作为答案,如this one证明 – 我认为测试文件是否是串口的好方法是测试字符设备的主要模式
并检查这是否真的是一个TTY.

在互联网上爬行,我找不到任何文件谈论整个统一的TTY主要模式.好吧,只有一个Linux手册页说明ptmx具有主模式5.

虽然我已经询问了基于this Stack Overflow的tty字符设备的实现细节
问题,我想我可能会要求Unix Stack Exchange社区了解tty值在Unix版本中的稳定性.

所以,我要求你的帮助建立一个所有tty的主要模式的知识库
系统上的文件,即:主要模式是什么

>真正的串口?
>伪终端(PTS)端口?
> FTDI USB串口?
>其他USB串口?

要获取字符设备主要模式的值,您应该使用:

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

或使用好老ls:

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

您可以将信息放在自己的答案中,或者通过其他信息扩展社区维基答案.

最佳答案
Unix版本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

(还没有pty)

Linux 3.2.0(debian wheezy).

注意:您也可以通过搜索/ dev由group tty和dialout拥有来查找这些内容.这是Debian的事情.

>虚拟控制台

> / dev / tty [0-9] *:4

>真正的串口:

> / dev / ttyS [0-9]:4

>伪终端:

> / dev / pts / [0-9]:136
> / dev / pts / ptmx:5

> FTDI USB串口:

> / dev / ttyUSB [0-9]:188

> USB串口:(AVR嵌入式USB / Arduino Uno)

> / dev / ttyACM [0-9]:166

Linux 3.4.0(Android 4.4.2 / Nexus 5)

注意:所有linux加上:

> ttyACM(单元调制解调器控制)

>(显然没有/ dev条目):166

> ttyHSL(蓝牙)

> / dev / ttyHSL0:247

> ttyHS(蓝牙)

> / dev / ttyHS99:248

达尔文13.1.0(MacOS 10.9.2):

>真正的串口:

> / dev / ttys [0-9a-f]:4

>伪终端:

> / dev / ttys [0-9] {3}:16

> FTDI USB串口:

> /dev/tty.usbserial.*:18

> USB串口:(AVR嵌入式USB / Arduino Uno)

> /dev/tty.usbmodem.*:18

Solaris 10 x86 / amd64:

>伪终端:

> / dev / pty [p-r] [0-9a-f](pty master):25
> / dev / tty [p-r] [0-9a-f](pty slave):26
> / dev / pts / [0-9]:24
> / dev / ptmx:23

>串口设备:

> / dev / tty [abc …] aka / dev / term / [abc …]或/ dev / tty0 [012 ..](uart serial,also):106
>也作为/ dev / ttyd [012 …],但是不同的接口(拨号,调制解调器)也在106但高的未成年人.

OpenBSD 6.0

如/ dev / MAKEDEV中的注释所述

> PC / AT UART串口:

> / dev / tty [0-7] [0-9a-f]:8
> / dev / cua [0-7] [0-9a-f]:8

> Cyclades串口:

> / dev / ttyc *:38
> / dev / cuac *:38

> Virtio串口:

> / dev / ttyVI *:94

> USB串口:

> / dev / ttyU [0-3]:66
> / dev / cuaU [0-3]:66

> wscons终端:

> / dev / tty [C-J] [0-b]:12

>伪终端主站和从站(非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和TrueOS

FreeBSD(及其衍生产品,如TrueOS)是您的想法显示致命缺陷的地方. FreeBSD中没有主要的次要设备编号方案.

传统上安装在/ dev的FreeBSD上的devfs伪文件系统根本不使用主要的次要系统将设备分组为“主要”类.相反,设备的rdev与伪文件系统中的i-node编号相同,i-nodes在生成设备节点时按升序简单分配,具体取决于当时手头机器上的确切硬件.

因此设备号不能用作isatty()的快捷方式.

转载注明原文:linux – 你的Unix的TTY主要数量是多少? - 代码日志