一、Linux的tty
从图中可以看出(标准输入的fd是0,标准输出的fd是1,标准错误输出的fd是2)
在个人计算机上,只有一个实际的控制台,没有终端,所以终端都是在控制台上用软件模拟的。
历史上,console指主机本身的屏幕和键盘,而tty指用电缆连接的其它位置的控制台。
这是计算机的概念:/dev/console是系统控制台,是与操作系统交互的设备。平时我们看到的PC只有一个屏幕和键盘,它其实就是控制台。
这是应用程序的概念:/dev/tty指的是当前的控制台。/dev/tty如果当前进程有控制终端,那么/dev/tty就是当前进程控制台的设备文件。
控制终端可以是伪终端也可以是虚拟控制台终端。
当打开一个终端时:这个bash进程的控制终端就是/dev/tty,而且在该终端启动的所有程序的控制终端都是/dev/tty。这个终端就是这些进程的控制终端。
每一个前台进程都会有一个控制终端。
虚拟终端:
1、虚拟控制台终端:
Linux启动的时候会创建63个本地虚拟终端,tty1~tty63
tty0指的是当前虚拟终端
/dev/consule是与操作系统硬件的键盘和显示器相关联的,谁是当前虚拟终端,/dev/consule就指向谁。
2、伪终端: