在嵌入式开发中,理解 tty
和 pty
的区别对串口通信、远程登录、Shell 控制等场景至关重要。它们的核心区别在于 物理/虚拟 和 主从关系:
https://stackoverflow.com/questions/4426280/what-do-pty-and-tty-mean
/dev/ttyS0
、/dev/ttyAMA0
),常见于嵌入式开发板与主机串口通信。/dev/tty1
`/dev/tty6`),通过按键切换(Ctrl+Alt+F1F6)。ssh
、telnet
服务端、screen
等)。/dev/pts/N
):行为完全类似真实 TTY,供应用程序使用(如 Shell bash
)。sshd
)打开主设备 (/dev/ptmx
)。/dev/pts/0
)。screen
)。特性 | TTY | PTY |
---|---|---|
本质 | 终端设备(物理/虚拟) | 伪终端对(Master + Slave) |
硬件关联 | 可能关联物理硬件(如 UART) | 纯软件模拟,无物理硬件 |
设备文件 | /dev/ttyS* , /dev/ttyUSB* , /dev/tty1 |
/dev/pts/* (Slave 端) |
典型场景 | 串口调试、本地控制台 | SSH 远程登录、screen /tmux 会话 |
主从关系 | 独立设备 | 必须成对使用(Master 控制 Slave) |
TTY 场景:
/dev/ttyS0
)连接开发板与主机,使用 minicom
或 picocom
进行调试。/dev/tty1
)输出内核日志。PTY 场景:
sshd
创建 PTY 对,远程 Shell 绑定到 /dev/pts/0
。screen
管理串口会话:screen /dev/ttyUSB0 115200
会为串口创建一个 PTY 会话。/dev/tty
:指向当前进程的控制终端(可能是 TTY 或 PTY Slave)。/dev/console
:系统控制台(优先级最高,可指向 TTY 或 PTY)。# 嵌入式设备通过 UART0 (ttyS0) 连接主机
# 主机使用 picocom 连接物理 TTY:
picocom -b 115200 /dev/ttyUSB0
# 用户通过 SSH 登录设备:
# 设备端:sshd 创建 PTY 对(Master + /dev/pts/0)
# Shell(bash)绑定到 /dev/pts/0,输入/输出通过 SSH 传输
ssh root@embedded-device
# 在设备内查看终端类型:
$ tty
/dev/pts/0 # PTY Slave
理解 TTY 和 PTY 的差异,能帮助开发者更高效地处理嵌入式系统中的终端交互、远程访问和多任务管理!