当前位置:首页 > 控制台
  • 你清楚Linux控制台、终端与shell及它们的关系吗?

    当使用Linux时,我们经常会遇到终端和外壳程序的概念。 例如,在桌面版Ubuntu中,我们可以右键单击桌面,然后单击“打开终端”以打开终端。 此时,我们可以在终端中输入Linux命令。 可能有人会问,这不是错字吗? 那么终端和外壳之间是什么关系呢? 1什么是终端 对于什么是终端,我们先看一个定义。可以看出终端就是一个输入输出设备,简单的可以理解为鼠标,键盘和显示器。但是这个好像跟Linux中终端的概念有些出入,下面听我来娓娓道来。 a combination of a keyboard and output device (such as a video display unit) by which data can be entered into or output from a computer or electronic communications system. 但如果想理解了解什么是终端,还需要从“远古”时期说起。在1970年之前,那个时候还没有个人电脑。那个使用只有大型机和小型机,也就是衣柜那么大的计算机。当时比较著名的计算机如DPD-7和GE-45等。 当时Ken Thompson和Dennis Ritchie(就是下图中的两位大神)负责在DPD-7上面开发一个新的操作系统,没错,就是UNIX操作系统。为了提高计算机的使用效率,他们打算让这个操作系统支持多个用户同时使用这台计算机。 但是,当时的显示器是一个非常贵的设备,不太可能每个人都有一个显示器。因此两个人想出了一个变通的方法。他们选择了便宜的电传打字机来做终端设备。这个电传打字机(TeleType)就是ASR33,就是下图这个设备。 这个设备通过键盘将信息输入计算机当中,而计算机的输出则是通过上面的纸打印出来。这样UNIX就成为世界上第一个支持多用户的操作系统,而ASR33则成为第一个Unix终端。后来,缩写TTY也就是用来表示Unix或者Linux终端了。 随着技术的发展和硬件价格的不断降低,终端也变得越来越先进和便宜。1970年,DEC发明了VT05视频终端。就是下面这个东东,可以看出她有个小显示器。也越来越像现在的键盘显示器了。 聊到这里我们知道了,所谓终端,其实就是一个物理设备,也就是计算机的输入输出设备。 2什么是控制台 在上个世纪70年代,终端是通过线缆连接在主机上的。同时,在主机上还有一种特殊终端,它是直接集成在主机上的。这个特殊的终端被称为控制台。这个终端的特点是只能被管理员使用。每一个计算机只有一个控制台,它在外观上与普通终端并没有太大的差异,但最重要的是控制台可以做一些普通终端不能做的事情。 比如当操作系统出现启动失败的时候,它会打印一些信息到控制台上,但终端并不会收到该信息。另外,当操作系统以单用户模式启动的时候,我们就只能通过使用控制台来登录了。这个时候其它终端是没有权限登录的。 3Linux操作系统的终端模拟器 前面我们了解到终端实际上是硬件设备,但是前面我们在Ubuntu上可以用菜单打开一个终端(Open Terminal)。其实,我们打开的这个窗口也是一个终端,我们称这个终端为终端模拟器,它是用软件的方式来模拟一个终端设备。有的时候我们又称它为虚拟终端。 如果你使用的是gnome终端,我们可以通过下面命令看一下它的帮助问答。 man gnome-terminal 可以看出gnome-terminal就是一个终端模拟程序,而它的功能就是访问Unix shell。 gnome是用来模拟Xterm的,而Xterm本身也是一个终端模拟器。它模拟了VT102物理终端。 打开Linux虚拟终端的方法有很多种,如果我们使用的是桌面版的Linux,也就是图形界面版的。那么通常我们可以通过命令打开一个命令行终端。如下所示。 另外,Linux操作系统起来的时候默认是有7个虚拟终端的。这些虚拟终端并非前面所说的在桌面中打开的虚拟终端,而是通过显示器直接显示的。我们可以通过快捷键在这些终端之间进行切换,比如Ctrl+Alt+ F1可以切换到第一个终端,而Ctrl+Alt+ F2可以切换到第二个终端,以此类推Ctrl+Alt+F7可以切换到第七个终端。通常情况下对于图形界面来说,第七个是图形终端,其它是文字终端。 通过前面的介绍,我们从外面理解了关于终端、控制器和虚拟终端等概念。也对Linux操作系统中虚拟终端有所了解。接下来我们将进一步的深入介绍到Linux的内部。 4什么是Shell 其实我们在前面文章中介绍过关于Shell的内容。Shell其实就是一个应用程序,它实现了用户对操作系统访问的接口。比如我们常见的管理文件,用户和网络资源等等,都是通过Shell来完成的。 Shell是一个应用程序,同时它又有很多具体的实现,比较常见的包括Bash、Zsh、 Csh和Ksh等等。 我们前面了解到终端是个物理设备,它被用户用来输入和现实信息,而目前我们使用的虚拟终端则是对物理设备的模拟。Shell则是用来执行用户命令的。这样我们现在就很容易理解终端和Shell的关系。 如果我们通过桌面版打开一个虚拟终端的话,那么终端和Shell的关系如下图所示。 如果我们不是通过本地的设备连接的,而是通过网络来访问计算机的话,那么其关系如下图所示。可以看出,这里面有个pty的组件起了比较关键的作用,它建立了两者之间的关联。 1Linux系统中的tty、pty和pts 前面我们从概念层面对终端、控制台和shell等进行了介绍。但是这些概念在Linux操作系统中是怎样的呢?它们之间的关系又是怎样的呢? 前面已经介绍过tty,它是一个终端,也就是一个输入输出设备的集合。而目前在Linux中都是通过虚拟终端来与计算机交互的,因此在Linux中tty其实就是虚拟终端,可以将其理解为一个软件。如果我们同时按住Ctrl+Alt+F5就可以切换到虚拟终端5,具体如下。 在Linux操作系统中,软件的整体架构要复杂一些,这是因为Linux不仅仅要支持虚拟终端,还有能够支持键盘显示器的物理外围设备,还要支持通过telnet或者ssh等网络的形式的连接。如下图给出了一个完整的示例。 为了支持不同类型的接入方式,在Linux实现了一个伪终端的概念,也就是pty。其中p是pseudo的缩写。 伪终端分为两部分,如上图所示,包括master和slave两部分。其中master实现了对不同接入方式的适配,它实现对来自不同设备或者软件消息的解析,将结果传输给slave;而slave端其实就是一个虚拟终端,它实现了与shell的交互,对于shell来说,ptsiu是一个终端设备。 可能还是不太好理解,我们举一个具体的例子,比如telnet实现对远程计算机的管理,其实在客户端就是发送的各种字符串,通过网络发送给telnet守护进程,然后telnet守护进程调用master的功能实现解析。 今天我们主要从概念和架构的层面介绍了终端、控制台和Shell等概念,并介绍了Linux操作系统中常见的诸如tty、pty和pts等名称。后面我们以一个具体的实例来让大家更加清楚的理解上述架构。

    时间:2020-08-02 关键词: Linux shell 控制台 终端

  • 《CSGO》控制台现新BUG 人气雪球回归战场画风突变

    2018年12月,作为《CS:GO》冬季季节活动的一部分,雪球被添加到了游戏的购买菜单中,可以说成功掀起了全世界的打雪仗狂潮,玩家们纷纷涌入《CS:GO》来追寻最简单也是最经典的快乐。虽然1月份活动结束后雪球下架,在昨(17)日还是有沙雕玩家挖掘出了如何利用Bug在现在的游戏中购买雪球,并且成功在严肃的竞技比赛中用其搅局。7月17日,《CS:GO》主播Mocmolde第一个展示了如何利用Bug的控制台命令,很简单,只要输入:“buy x 31”(x可以是任何字幕)。这个命令将会给玩家的手雷槽里塞一个雪球。主播演示团队购买雪球:于是在他的队伍统统这么干之后,传统的竞技比赛彻底成了闹剧,他们想方设法在敌人掏全自动武器射击的同时用雪球进行抵抗。该Bug的具体工作细节还不得而知,我们只知道大多数比赛地图中都能通用,虽然根据地图不同,可能会出现只有条子或只有匪能够买雪球的情况。被雪球命中后的视野雪球明显可以当做沙雕道具来增添游戏乐趣,但是这个Bug应该留不久。因为雪球命中后的确可以阻碍玩家的视线,换句话说,只要你砸的够准,这玩意可是个相当强大的实用工具。

    时间:2019-07-30 关键词: bug csgo 控制台

  • 只需一步,就可把win32控制台项目转变为win32项目

    #pragma comment(linker, "/entry:WinMainCRTStartup /subsystem:windows")加上这句就是win32应用程序了 你的主函数必须是 int WINAPI WinMain()当然如果用main函数的话 可以写这样写#pragma comment(linker, "/entry:mainCRTStartup /subsystem:windows")

    时间:2019-03-06 关键词: win32 控制台

  • 基于WinCE嵌入式系统控制台的设计与实现

    基于WinCE嵌入式系统控制台的设计与实现 汪国林,余辉 合肥工业大学科研处,合肥230009;中国电子科技集团公司第41研究所,蚌埠233006 [摘要]:本文介绍了基于Wince嵌入式系统控制台的设计与实现。控制台通过Arcnet网络与机器控制单元进行通信,实现状态显示和参数设置。详细介绍了软件部分的界面设计、网络通信和Wince系统定制。 [关键词]:WinceEvcArcnet网络控制台 DesignandRealizationofControllerBasedonWinceSystem WANGGuo-lin,YUHui.DepartmentofScienceResearch,HefeiUniversityofTechnology,Hefei230009,China.The41stInstituteofChinaElectronicsTechnologyGroupCorporation,Bengbu233006,China. [Abstrace]:ThispaperintroducedtheDesignandRealizationofconsoleBasedonWinceSystem.ConsolecommunicatewithmachinecontrolunitbyArcnetnetwork,thenshowthestatusofmachineandparametersetting.Thepaperalsointorducedinterfacedesign、networkcommunicationandWincesystenbuilderindetail. [Keywords]:WinceEvcArcnetnetworkConsole 操作员控制台(以下简称OPC)是烟草包装机设备中的人机界面,整个系统基于Wince嵌入式操作系统,采用了ARCNET网络接口,实现了与包装机设备控制单元的高速通信,很好地满足了系统的实时性、快速性和可靠性要求。 1、系统简介 1.1、系统工作原理 OPC通过ARCNET网络接收来自包装机组控制单元传送来的数据,完成概 图显示、故障信息报警等相应功能;接受维护人员的参数修改和设定,并将数据发送到包装机组控制单元。 整个系统有以下几个部分组成:控制单元、网络接口、人机界面。 由于该系统数据处理量较大,所以整个系统应该具有很高的运行速度及集成度,综合以上考虑采用了速度较快的工业控制板;网络接口采用了自主设计的PC104接口的ARCNET网卡;为了方便用户地使用,人机接口采用了大屏幕液晶触控屏。系统工作原理如图1所示。 图1系统工作原理框图 1.2、ARCNET网络 ARCNET(AttachedResourceComputerNetwork)协议是Datapoint公司于70年代末推出的,其性能特点特别适合于控制需要而得以在工业自动化领域成功应用。实践证明,ARCNET具有可靠性高、通信速率高、可确定的性能以及远距离通信能力等特点,是一种理想的现场总线技术。 首先,现场总线必须能够在预先确定的时间内完成消息传输。ARCNET所采用的令牌传递协议确保能在时间上满足这个要求。其次现场总线中的消息通常是短消息,ARCNET支持长度可变的数据帧(0-507字节),额外开销小,再加上其较高的数据速率(通常为2.5Mbps),使得ARCNET对对短消息具有良好的快速响应性能。其主要特点如下:①时间的可确定性;②逻辑环;③自动应答;④广播消息;⑤自动重构。 2、系统软件设计 MicrosoftWindowsCE是一个32位的、紧凑的、高效和可扩展的操作系统,适用于各种嵌入式系统和产品。它拥有多线程、多任务、确定性的实时、完全抢占式优先级的操作系统环境,专门面向只有有限资源的硬件系统。同时,它的模块化设计方式使得系统开发人员和应用开发人员能够为多种多样的产品来定制它,可以选择、组合和配置WindowsCE的模块和组件来创建用户版的操作系统,例如客户电子设备、专用工业控制器以及嵌入式通信设备等等。采用EVC来设计控制软件,最终完成的代码存储于CF卡中,可靠性高。 2.1、Wince操作系统的定制 一个良好的运行环境决定着程序运行的稳定性,一个稳定的系统也是需要精心定制和裁剪的,微软公司提供了一整套嵌入式系统解决方案,由于它的模块化设计和多种接口的支持,可以定制满足需求的最小软件模块和组件的嵌入式系统平台,利用较小的内存空间来完成目标系统的功能,可以利用其工具PlatformBuilder(简称PB)来实现。PB是开发基于WindowsCE嵌入式操作系统的专用开发工具。本文利用WindowsCE.net的PlatformBuilder4.2并根据目标平台的硬件配置对WinCE操作系统进行定制,删除在所开发的系统中不需要的功能块,精简组件,添加了触摸屏驱动程序,生成新建WinCE平台的映象文件,使系统占用最少的内存,然后将映象文件NK.Bin移植到目标设备的硬件平台即可。同时,使用PlatformBuilder导出在该平台上开发应用程序所需要的SDK。 定制系统时需要加入触摸屏的驱动,系统采用USB接口。过程如下: (1)在c盘建立一个CEDB文件夹并把需要的所有文件放入该文件夹; (2)运行PB开发环境,在project.bib文件中添加: TouchKit.exec:CEDBTouchKit.exeNKS DrawTest.exec:CEDBdrawtest.exeNKS Calbration.exec:CEDBcalbration.exeNKS UpdateEEPROM.exec:CEDBUpdateEEPROM.exeNKS USBTouch.dllc:CEDBUsbTouch.dllNKSH (3)编辑project.reg文件,在文件中添加: [HKEY_LOCAL_MACHINEDriversTouchKit] "RBSIZE"=dword:800 "RBTIME"=dword:989680 "FLAGS"=dword:1 "BeepFrequence"=dword:1F4 "BeepTime"=dword:64 "ZFilterThreshold"=dword:800 "ZFilterBound"=dword:00100001 "SoundType"=dword:0 [HKEY_LOCAL_MACHINEDriversUSBLoadClients14371_1_0_0255_255_255USB_TOUCH_Driver] "DLL"="USBTouch.dll" [HKEY_LOCAL_MACHINEDriversUSBLoadClients14371_2_0_0255_255_255USB_TOUCH_Driver] "DLL"="USBTouch.dll" [HKEY_LOCAL_MACHINEDriversUSBLoadClients4660_1_0_0255_255_255USB_TOUCH_Driver] "DLL"="USBTouch.dll" [HKEY_LOCAL_MACHINEDriversUSBLoadClients3823_1_0_0255_255_255USB_TOUCH_Driver] "DLL"="USBTouch.dll" [HKEY_LOCAL_MACHINEDriversUSBLoadClients3823_2_0_0255_255_255USB_TOUCH_Driver] "DLL"="USBTouch.dll" (4)编译并生成系统文件。 2.2应用程序设计 此界面的应用程序是在个人计算机上进行的。其开发平台是eVC4.0集成开发环境,在应用程序开发之前,首先利用PlatformBuilder4.2创建该平台上的SDK并导人到eVC4.0中,然后从eVC4.0的环境列表中选择所定制的平台,接下来就可以进行应用程序的开发、调试及运行了。 人机界面的功能模块主要包括机器概图显示、参数设置界面、配置界面、数据统计界面。本系统是采用一个基于主对话框的应用程序,各个不同的功能采用子对话框来表现。主对话框主要完成初始化网卡、启动接收数据线程和调用其它子对话框。工作时,控制台(简称上位机)主要接收包装机组发送来的系统信息并显示,例如各机器的工作状态、检测点故障等。同时,接收用户对参数的修改并向控制单元发送控制指令信息,这一功能通过用户触摸上位机的触摸屏来完成。上位机和控制单元之间通过ARCNET网络来进行通讯。系统流程图如图2所示。 图2系统流程图 2.3ARCNET网络软件设计 由于ARCNET通信协议是由COM20020的内部集成电路完成的,因此通信软件的开发主要体现在应用软件上,主要包括2部分:芯片的初始化和数据包的传输。 ①初始化顺序。首先决定总线的工作方式,必须在COM20020内存空间中的奇位置任意作一些读写操作(当COM20020上电时,内部寄存器可以被读写)。在NODEID寄存器中写入一个非零值将会激活COM20020的核心部件,但是NODEID寄存器是否能被操作是由Setup寄存器决定的,所有Setup寄存器应首先被写。在NodeID寄存器中写入一个非零值后(节点地址必须是独一无二的网络才能正常工作),COM20020的核心部件将会被激活,然后设置Configuration寄存器的TXEnable位为1。 ②数据包的传输。由于COM20020数据包结构中的有效数据放在数据包的最后位置,使用起来很不方便,本系统中首先按照用户数据包格式打包数据,然后调用函数把用户数据包转换为COM20020数据包格式,放入发送缓冲区内。接受数据包时,通过接收中断从缓冲区读取数据,并做一个相反的处理过程,把COM20020数据包转换为用户格式数据包。数据包格式转换如图3所示。 图3数据包格式转换示意图 3.结语 基于Wince嵌入式系统的操作员控制台的设计开发已成功的应用,并很好地完成了整个包装机系统的状态显示和控制。经实验,满足用户和设计要求。 作者简介:汪国林,男,1974年6月出生,重庆市人,汉族,工学硕士,讲师。合肥工业大学科研处,安徽省合肥市屯溪路193号,邮编:230009。联系电话:0551-2901124,13705601503,EMAIL:hfutwgl@163.com.主要从事:检测技术与自动化装置技术研究。 参考文献: [1]COM20020DataBook[Z],StandardMicrosystemsCorporation [2]ARCNETTutorial[Z],ContemporaryControlsCorporation,1999 [3]张冬泉,谭南林,王雪梅等.《WindowsCE实用开发技术》[M],电子工业出版社,2006 [4]周功业,汪惊奇,王建.ARCNET网络下数据采集的设计与实现[J].计算机工程,2003,29(12)

    时间:2018-10-29 关键词: WinCE 嵌入式系统 控制台

  • VC++下实现2048总结(基于控制台和对话框两个程序)

    程序截图:基于控制台:基于对话框:首先感谢Reason提供的控制台下的源程序,Ta实现了一个2048的简易“引擎”,基于对话框程序就是借助这个“引擎”,加上界面来实现的。程序虽然用VC6写的,但已经验证,经VS2010转换可以正常编译、运行;1. 对话框程序的界面显示,用了从CStatic派生来的CLabel类,这个类是从codeproject找来的,一般用MFC编程的人都知道CLabel这个类,好东西多用;2. 从控制台到对话框程序的转变,结合“数据-界面”分离原则,总结里面的规律;3. 基于控制台的程序,永远总是很好的仿真工具,总是接近事物的本质(这也是控制台、命令行总是存在的原因);而界面程序,是在算法、逻辑、核心上加了一个华丽、漂亮、舒适的人机交互界面;4. 对话框程序,增加了“无限撤销”,借助stl::stack实现的:每次把当前状态push到堆栈,撤销时,从堆栈中pop到当前状态;5. 2/4/8/16/32...每个数字对应一种颜色RGB,用stl::map来的实现的,没有用MFC的CMap,stl::map更直观一些吧;

    时间:2018-10-12 关键词: vc++ 对话框 控制台

发布文章

技术子站