在UNIX系统中,用户通过终端登录系统后得到一个Shell进程,这个终端成为Shell进程的控制
终端(Controlling Terminal),控制终端是保存在PCB中的信息,而我们知道 fork 会复制PCB中的信息,因此由Shell进程启动的其它进程的控制终端也是这个终端。
默认情况下(没有重定向),每个进程的标准输入、标准输出和标准错误输出都指向控制终
端,进程从标准输入读也就是读用户的键盘输入,进程往标准输出或标准错误输出写也就是输
出到显示器上。每个进程都可以通过一个特殊的设备文件 /dev/tty 访问它的控制终端。事实上每个终端设备都对应一个不同的设备文件, /dev/tty 提供了一个通用的接口,一
个进程要访问它的控制终端既可以通过 /dev/tty 也可以通过该终端设备所对应的设备文件来访
问。 ttyname 函数可以由文件描述符查出对应的文件名,该文件描述符必须指向一个终端设备而
不能是任意文件。下面我们通过实验看一下各种不同的终端所对应的设备文件名。