我使用 Linux 控制台已有多年,但目前开始思考它的实际工作原理。输入 acommand
作为字符串并按下Enter
可在同一终端窗口中返回其输出。
打开新的终端窗口并执行tty
显示以下结果:
$ tty
/dev/pts/10
pty 上的手册页定义:
一个期望连接到终端的进程,可以打开一个伪终端的从端,然后由打开了主端的程序驱动。在主端写入的任何内容都会提供给从端的进程,就像在终端上输入的一样。[...]反之,写入伪终端从机端的任何内容都可以被连接到主机端的进程读取
我的理解:
实际的终端窗口连接到从机/dev/pts/10
,我在终端窗口中输入的所有输入都在从机端写入,然后在主机端读取。连接到主端的进程知道如何处理用户输入的所有字符串,执行它们并将命令结果写入主端,然后在从端读取并显示在终端窗口中。
问题:
连接到主端的进程是什么,它知道如何执行用户以字符串形式输入的命令?