Linux中终端和控制台的一些不成熟的理解

来源:互联网 发布:英国人怎么样 知乎 编辑:程序博客网 时间:2024/04/30 13:58

首先声明,这仅仅是在下一些不成熟的想法。是通过看网上的一些资料和自己实践的一些心得,应该都是些很不成熟甚至是不太正确的想法。但是我还是想记录下来,算是一个心路历程吧。等以后成熟了,再来修改。

 

首先说一下控制台和终端在历史上的一些区别

 

要明白这两者的关系,还得从以前的多人使用的计算机开始。大家都知道,最初的计算机由于价格昂贵,因此,一台计算机一般是由多个人同时使用的。在这种情况下一台计算机需要连接上许多套键盘和显示器来供多个人 使用。在以前专门有这种可以连上一台电脑的设备,只有显示器和键盘,还有简单的处理电路,本身不具有处理计算机信息的能力,他是负责连接到一台正常的计算 机上(通常是通过串口) ,然后登陆计算机,并对该计算机进行操作。当然,那时候的计算机操作系统都是多任务多用户的操作系统。这样一台只有显示器和键盘能够通过串口连接到计算机 的设备就叫做终端。   而控制台又是什么回事呢? 学机电的人应该知道,一台机床,或者数控设备的控制箱,通常会被称为控制台,顾名思义,控制台就是一个直接控制设备的台面(一个面板,上面有很多控制按 钮)。在计算机里,把那套直接连接在电脑上的键盘和显示器就叫做控制台请注意它和终端的区别,终端是通过串口连接上的,不是计算机本身就有的设备,而控制台是 计算机本身就有的设备,一个计算机只有一个控制台计算机启动的时候,所有的信息都会显示到控制台上,而不会显示到终端上。也就是说,控制台是计算机的基本设备,而终端是附加设备。 当然,由于控制台也有终端一样的功能,控制台有时候也被模糊的统称为终端。计算机操作系统中,与终端不相关的信息,比如内核消息,后台服务消息,都可以显示到控制台上,但不会显示到终端上

 

现在由于计算机硬件越来越便宜,通常都是一个人独占一台计算机超做,不再连接以前那种真正意义上的“终端设备了”,因此,终端和控制台的概念也慢慢演化了。终端和控制台由硬件的概念,演化成了软件的概念。现在我们提到终端大多都是虚拟终端,在我的CentOS7中一共有6个虚拟控制台终端,分别对应设备文件/dev/tty1----/dev/tty6(控制台“Alt”+“Fx”能够切换到第x个(字符哑)终端。如果需要从X-Window里跳到第(字符哑)终端,需要“Ctrl”+“Alt”+“Fx”),其中/dev/tty1是图形控制台,其他的都是命令行控制台。还有一个设备文件/dev/tty0表示当前控制台,也就是当前你在使用哪个控制台,tty0就表示那个控制台。还有一个设备文件/dev/console好像是和tty0关联在一起的,貌似也可以表示当前控制台。

下面是一个简单的实验:首先我位于图形界面的控制台,然后按下Ctrl+alt+F2这个时候就进入了/dev/tty2所关联的控制台终端。如图:

 

然后我们登录用户。

这个时候我们可以用tty命令查看一下当前终端名称

发现确实是/dev/tty2

 我们像/dev/tty0写入一句话:(需要root权限)

 

 我们发现在这个控制台终端中显示了我们写入的话,这是应为/dev/tty0就表示当前控制台终端。

我们向/dev/console中写入,同样也会在当前控制台终端中显示。

 

貌似就是应为/dec/console和/dev/tty0是关联的。

 

下面我们打开一个新的字符控制台终端,alt+F3,然后试着在/dev/tty2所关联的控制台终端中,像tty2文件中写入一句话,看产生什么效果:

tty2所表示的终端中。

这是我们切换到tty3所表示的控制台终端中,发现已经输出了hello,world

 

 

上面这些就是控制台终端。。。。。。

 

 

在图形界面的控制台终端中,还提供了无数个虚拟终端(就是我们可以用右键-》在终端中打开,弹出的那个可以输入字符,显示输出的窗口。),这些虚拟终端对应的设备文件在/dev/pts/中

 

我们可以右键-》在终端中打开,来打开一个虚拟终端,然后执行tty命令,看看终端设备的名称

 

发现叫/dev/pts/0。

 

然后我们再用同样的方法打开一个终端

没错这次叫/dev/pts/1了,以此类推,依次打开的就是/dev/pts/2....

 

我们试着在/dev/pts/0中向/dev/pts/1中写入一句话:

 

 我们会发现在第二个打开的终端窗口中,显示了我们输入的话。

 

我们也可以试着在第一个打开的终端窗口(/dev/pts/0)中,向/dev/tty2写入一句话:

 

然后我们切换到该控制台,发现我们输入的话已经在这个控制台终端输出了。

 

最后介绍一下设备文件/dev/tty,这个文件在程序中经常使用。由于程序可能运行在不同的终端中,但是程序没有必要知道究竟在哪一个终端中运行。如果程序需要与终端打交道,那就和/dev/tty打交道吧!因为这个文件始终关联当前终端。!!

 

就写到这里了,都是些不成熟,甚至也可能是不争取的想法,希望对你有帮助。不对的地方还请指教,谢谢~~

 

参考了:http://blog.csdn.net/boldeagle/article/details/2610671

    http://www.cnblogs.com/wi100sh/p/4513245.html

 

0 0
原创粉丝点击