Search CTRL + K

PTY

现代 linux 中为了向后兼容保留了 TTY,但其进化为了内核子系统。为了让用户空间的模拟终端与用户空间的 shell 可以交互,引入了 PTY(pseudo terminal)

模拟终端通过打开 /dev/ptmx 特殊文件以创建一对 PTY:[1][2]

标准输入输出

事实上,应用程序的标准输入输出就是 /dev/pts/x 设备文件的软链接:

~
❯ ls -al /dev/ | grep std
lrwxrwxrwx      - root 21 Apr 16:25 stderr -> /proc/self/fd/2
lrwxrwxrwx      - root 21 Apr 16:25 stdin -> /proc/self/fd/0
lrwxrwxrwx      - root 21 Apr 16:25 stdout -> /proc/self/fd/1

~
❯ ls -al /proc/self/fd/{0,1,2}
lrwx------ - oliverdding 30 Apr 19:00 /proc/self/fd/0 -> /dev/pts/9
lrwx------ - oliverdding 30 Apr 19:00 /proc/self/fd/1 -> /dev/pts/9
lrwx------ - oliverdding 30 Apr 19:00 /proc/self/fd/2 -> /dev/pts/9

  1. https://blog.devtrovert.com/p/sighup-signal-for-configuration-reloads ↩︎

  2. https://man7.org/linux/man-pages/man4/ptmx.4.html ↩︎