billlee
2021-01-24 16:17:06 +08:00
基本上就分为两类:shell 和 terminal
terminal 负责底层的输入输出,例如:缓冲一行数据,直到 enter 按下的时候才把数据发送给前台进程、把 backspace, 方向键等转换成对应的转义序列,收到 ctrl+c 时给前台进程发送 SIGINT; 根据程序输出的转义序列给输出的文字设置颜色、粗体、闪烁、下划线等不同的格式。
shell 负责解释用户输入的命令,根据输入的命令建立管道、fork, 调整 stdin/stdout/stderr 描述符,exec
tty, pty, windows 超级终端都是各种不同的 terminal. bash, zsh, dash 等都是各种不同的 shell.
至于 tty 是哪个进程负责的,如果这里的 tty 是指 linux 的虚拟 tty (ctrl + alt + F1-F6 调出来的那些) ,那只能说是内核本身负责的,不管对键盘输入的转义、还是对程序输出转义的解读,都是由内核内的虚拟 tty 驱动负责的。