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

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

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

现在由于计算机硬件越来越便宜,通常都是一个人独占一台计算机超做,不再连接以前那种真正意义上的“终端设备了”,因此,终端和控制台的概念也慢慢演化了。终端和控制台由硬件的概念,演化成了软件的概念。现在我们提到终端大多都是虚拟终端,在我的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

Linux中终端和控制台的一些不成熟的理解的更多相关文章

  1. Linux中终端和控制台区别

    Linux中终端和控制台区别: 终端:英文名叫terminal 控制台:英文名叫console 两者区别要从以前的多人使用的计算机开始 以前,由于计算机很昂贵,所用一台计算机一般由多个人同时使用.这样 ...

  2. linux中终端控制键Ctrl+C,Ctrl+Z,Ctrl+D的使用场合

    1.Ctrl+C比较暴力,就是发送Terminal到当前的程序,比如你正在运行一个查找功能,文件正在查找中,Ctrl+C就会强制结束当前的这个进程.2.Ctrl+Z是把当前的程序挂起,暂停执行这个程序 ...

  3. linux中终端字体样式显示不正常

    问题:Centos终端中,字体显示不正常,中间感觉有空格,空格和单词傻傻分不清. 解决办法: yum groupinstall "Chinese Support" yum grou ...

  4. linux字符终端(控制台)的字体更改

    查看已安装的终端字体 ls /usr/share/consolefonts/ 设置终端字体 sudo dpkg-reconfigure console-setup 或者 sudo vim /etc/d ...

  5. 关于Unix/Linux的终端、伪终端、控制台和shell

    历史是什么:是过去传到将来的回声,是将来对过去的反映. ——雨果(法)<笑面人> 阅读本文大概需要花费你15分钟 文章导航: 计算机的发展 UNIX系统的诞生 UNIX系统的发展 终端与控 ...

  6. linux中使用Python IDE pycharm教程

    今天使用vim编辑Python 并在linux中终端调试的时候,发现每次不是自己想要输出结果的时候,就要用vim编辑代码,再重新回到终端,比较浪费时间.搜索发现pycharm这一个Python ide ...

  7. 在Windows的控制台和Linux的终端中显示加载进度

    Windows中 #include <stdio.h> #include <windows.h> int main() { ;//任务完成总量 int i; ; i < ...

  8. 【转】linux下tty,控制台,虚拟终端,串口,console(控制台终端)详解----不错

    原文网址:http://blog.csdn.net/liaoxinmeng/article/details/5004743 首先: 1.终端和控制台都不是个人电脑的概念,而是多人共用的小型中型大型计算 ...

  9. 在Linux的终端中显示BMPString的内容

    在上一篇博文中,介绍了怎样在 Windows 的控制台界面下输出 BMPString 的内容,可是那里的方法在 Linux 下不适用.假设将那里的演示样例代码放到 Linux 下运行.输出的结果为乱码 ...

随机推荐

  1. JAVA实现WC.exe功能

    项目要求 实现一个统计程序,它能正确统计程序文件中的字符数.单词数.行数,以及还具备其他扩展功能,并能够快速地处理多个文件. 具体功能要求: 程序处理用户需求的模式为: wc.exe [paramet ...

  2. Internal Server Error - http code 500

    Eror Example 1 :  

  3. Delphi Dll 动态调用例子(2)

    http://zhidao.baidu.com/question/157196792.html delphi动态调用DLL 写了个1.dll内容如下 library Project2; uses Sy ...

  4. api接口签名相关文章

    http://www.cnblogs.com/hnsongbiao/p/5478645.htmlhttp://www.cnblogs.com/codeon/p/5900914.html?from=ti ...

  5. Python学习-24.Python中的算术运算

    加法:+,与C#中并无区别,并且一样可以作用于字符串. 但Python中不支持字符串与数值类型的相加. i = 1 s = ' print(s + i) 这样是会在运行时报错的,正确写法如下: i = ...

  6. IIS7 上传时出现'ASP 0104 : 80004005'错误

    这个错误本身说的是上传的文件的大小超过IIS所设置的默认值,一般为200KB,压缩文件是个下下之选,我还真这么干过.后来了解到通过更改IIS对上传文件的默认大小设置,来实现上传. 下面说一下具体步骤: ...

  7. 前端工具Rythem介绍

    Rythem是一个与Fiddler同类的软件,和Fiddler一样具有 代理抓包/替换 功能,与Fiddler最大的不同是Rythem是跨平台&开源的. 另外,根据笔者的一次开发经验,Ryth ...

  8. ko内核模块文件以及载入模块命令modprobe insmod

    原文链接:https://blog.csdn.net/evenness/article/details/7655921?utm_source=blogxgwz5 modprobe: Load modu ...

  9. Flask系列03--Flask的路由 app.route中的参数, 动态参数路由

    Flask–路由 添加路由的两种方式 第一种 @app.route("/my_de") def detail() 第二种(了解即可) app.add_url_rule(" ...

  10. TCP BBR - 一键开启脚本

    这是秋水逸冰提供的TCP BBR一键开启脚本,脚本详细说明地址: https://teddysun.com/489.html 按照说明操作就可以了,注意问题:这个脚本获取有的时候可能有问题,如果提示脚 ...