相关疑难解决方法(0)

每个伪终端 (PTY) 组件(软件、主端、从端)的职责是什么?

我试图弄清楚tty如何工作的1(每个元素的工作流程和职责)。我已经阅读了几篇关于它的有趣文章,但仍然有一些模糊的地方。

这是我到目前为止的理解:

  • 仿真终端/dev/ptmx对伪终端的主控部分进行不同的系统调用。
  • 伪终端的master部分分配了一个文件/dev/pts/[0-N],对应过时的串口,并在其上“附加”了一个slave伪终端。
  • 从伪终端保存会话ID、前台作业、屏幕大小等信息。

以下是我的问题:

  1. ptmx除了分配从属部分之外还有什么用途吗?它是否提供某种“智能”,或者模拟终端(例如 xterm)具有像终端一样运行的所有智能?
  2. 为什么 xterm必须与 master 部分交互,因为它只转发 slave 部分的 stdout 和 stdin?为什么不能 直接读写pts文件
  3. 会话 ID 是否总是附加到一个 pts 文件,反之亦然?我可以输入 ps 命令并找到2 个 sessionId 的相同 /dev/pts/X吗?
  4. pts商店还有什么其他信息?Xterm 是自己更新所有字段,还是在其上ptm添加一些“智能”?

1. 我的理解基于Linus Akesson 揭秘TTYAndries BrouwerLinux Kernel帖子,以及这些网站上的其他几个问题

kernel terminal-emulator terminal tty pty

77
推荐指数
3
解决办法
2万
查看次数

了解 /dev 及其子目录和文件

$ ls -l /dev/stdin /dev/fd/0
lrwx------ 1 tim tim 64 2011-08-07 09:53 /dev/fd/0 -> /dev/pts/2
lrwxrwxrwx 1 root root 15 2011-08-06 08:14 /dev/stdin -> /proc/self/fd/0
$ ls -l /dev/pts/2 /proc/self/fd/0
crw--w---- 1 tim tty  136, 2 2011-08-07 09:54 /dev/pts/2
lrwx------ 1 tim tim     64 2011-08-07 09:54 /proc/self/fd/0 -> /dev/pts/2
Run Code Online (Sandbox Code Playgroud)
  1. 我想知道是否所有文件/dev及其子目录下的所有文件都是设备的文件描述符?
  2. 为什么彼此之间有这么多链接?例如,/dev/fd/0/dev/stdin/proc/self/fd/0都是指向 的链接/dev/pts/2
  3. 如果lin lrwx------mean link,cincrw--w---- 是什么意思?

linux file-descriptors devices

66
推荐指数
3
解决办法
6万
查看次数