叶子🍃
叶子🍃
发布于 2026-05-27 / 7 阅读
0

关于 Linux TTY

一个TTY对应两个文件描述符,一个是master_fd,一个是slave_fd,它们的读写是互相交叉连接的。

master_fd只有创建TTY的进程拥有,往这个文件里写东西相当于给程序打字(进入stdin),除了控制字符外都可以在slave_fd端读到。

slave_fd是公开的,对应类似/dev/pts/167这样的文件。往这个文件里写相当于在屏幕上打字(和stdout一个出路)

在任意终端输 tty 即可看到这个文件的slave端具体是谁。

TTY与其他文件不同的是:

  1. 具有内核管理的一些特殊行为。比如外部向TTY写时,遇到0x03这样的字符会导致内核向前台进程组发送SIGINT中断。这个行为可以被修改。

  2. 每个TTY会对应唯一的一个进程组,称之为“前台进程组”。这个数据由内核维护。