当前位置:  操作系统/服务器>linux
本页文章导读:
    ▪终端 /dev/console /dev/tty tty详解      一、/dev/console是系统控制终端,系统的错误信息什么的都输出到这里。 二、/dev/tty(n或者Sn)是进程控制台,如果在进程里打开一个这样的文件且该文件不是其他进程的控制终端时,那么该.........
    ▪Linux下建议的变量命名规则      (1)变量名必须有一定的意义,并且意义准确。例如有一个变量用于保存图书的数目,可以命名为number_of_book或者num_of_book。不建议使用i,因为它没有意义。也不建议使用number或book,因为意.........
    ▪dos文件在linux中显示^M问题的解决方法      几种去除^M的方法: 1、 cat filename1 | tr -d "\r" > newfile 2、 sed -e "s/^V^M//" filename > outputfilename 3、vi: 用vi打开文件 (1). 按ESC键 (2). 输入:%s/^M//g (wenhao测试此方式可用) 确定 ^M是使用 "CTRL-V CTRL-M".........

[1]终端 /dev/console /dev/tty tty详解
    来源: 互联网  发布时间: 2013-12-24

一、/dev/console是系统控制终端,系统的错误信息什么的都输出到这里。

二、/dev/tty(n或者Sn)是进程控制台,如果在进程里打开一个这样的文件且该文件不是其他进程的控制终端时,那么该文件就是这个进程的控制终端。那么我们进程printf一个数据就是输出到这里。

三、在本机上,用户可以使用alt+f1~fn切换控制台,看起来感觉存在多个屏幕,这种虚拟控制台对应tty1~n
  但实际上机器只有一个屏幕,也就是我们看到的这个屏幕,对应console。
  可以理解为console指向激活的那个tty(详细来说不是,tty0才是激活的那个tty,准确地说是激活的那个tty将输出显示到console).
  历史上,console指主机本身的屏幕键盘,而tty指用电缆链接的其它位置的控制台(仅包含屏幕和键盘)
  

代码如下:
#include   <fcntl.h>
  #include   <unistd.h>
  int   main()
  {
        int   fd;
        fd   =   open( "/dev/tty2 ",   O_WRONLY   |   O_NOCTTY);
        write(fd,   "hello   tty2\n ",   10);
        return   0;
  }

四、终端是一种字符型设备,它有多种类型,通常使用tty来简称各种类型的终端设备。tty是 Teletype的缩写。
  Teletype是最早出现的一种终端设备,很象电传打字机(或者说就是&#61514;),是由Teletype公司生产的。
  设备名放在特殊文件目录/dev/下,终端特殊设备文件一般有以下几种:

  1.串行端口终端(/dev/ttySn)
 
  串行端口终端(Serial Port Terminal)是使用计算机串行端口连接的终端设备。
  计算机把每个串行端口都看作是一个字符设备。有段时间这些串行端口设备通常被称为终端设备,因为那时它的最大用途就是用来连接终端。
  这些串行端口所对应的设备名称是/dev/tts/0(或/dev /ttyS0)、/dev/tts/1(或/dev/ttyS1)等,设备号分别是(4,0)、(4,1)等,分别对应于DOS系统下的COM1、 COM2等。
  若要向一个端口发送数据,可以在命令行上把标准输出重定向到这些特殊文件名上即可。
  例如,在命令行提示符下键入:
  echo test > /dev/ttyS1
  会把单词”test”发送到连接在ttyS1(COM2)端口的设备上。

  2.伪终端(/dev/pty/)

  伪终端(Pseudo Terminal)是成对的逻辑终端设备,例如/dev/ptyp3和/dev/ttyp3(或着在设备文件系统中分别是 /dev/pty/m3和/dev/pty/s3)。

  它们与实际物理设备并不直接相关。如果一个程序把ttyp3看作是一个串行端口设备,则它对该端口的读/写操作会反映在该逻辑终端设备对的另一个上面(ttyp3), 而ttyp3则是另一个程序用于读写操作的逻辑设备。这样,两个程序就可以通过这种逻辑设备进行互相交流,而其中一个使用ttyp3的程序则认为自己正在与一个串行端口进行通信。这很象是逻辑设备对之间的管道操作。
  
  对于ttyp3(s3),任何设计成使用一个串行端口设备的程序都可以使用该逻辑设备。但对于使用ptyp3的程序,则需要专门设计来使用ptyp3(m3)逻辑设备。
  例如,如果某人在网上使用telnet程序连接到你的计算机上,则telnet程序就可能会开始连接到设备ptyp2(m2)上(一个伪终端端口上)。此时一个getty程序就应该运行在对应的ttyp2(s2)端口上。
  当telnet从远端获取了一个字符时,该字符就会通过m2、s2传递给 getty程序,而getty程序就会通过s2、m2和telnet程序往网络上返回”login:”字符串信息。这样,登录程序与telnet程序就通过“伪终端”进行通信。
  通过使用适当的软件,就可以把两个甚至多个伪终端设备连接到同一个物理串行端口上。
  
  3.控制终端(/dev/tty)

  如果当前进程有控制终端(Controlling Terminal)的话,那么/dev/tty就是当前进程的控制终端的设备特殊文件。
  可以使用命令”ps –ax”来查看进程与哪个控制终端相连。对于你登录的shell,/dev/tty就是你使用的终端,设备号是(5,0)。
  使用命令 ”tty”可以查看它具体对应哪个实际终端设备。/dev/tty有些类似于到实际所使用终端设备的一个联接。

  4.控制台终端(/dev/ttyn, /dev/console) 

  在UNIX系统中,计算机显示器通常被称为控制台终端(Console)。它仿真了类型为Linux的一种终端(TERM=Linux),并且有一些设备特殊文件与之相关联:tty0、tty1、tty2等。
  当你在控制台上登录时,使用的是tty1。使用Alt+[F1—F6]组合键时,我们就可以切换到tty2、tty3等上面去。
  tty1 –tty6等称为虚拟终端,而tty0则是当前所使用虚拟终端的一个别名,系统所产生的信息会发送到该终端上。
  因此不管当前正在使用哪个虚拟终端,系统信息都会发送到控制台终端上。
  你可以登录到不同的虚拟终端上去,因而可以让系统同时有几个不同的会话期存在。
  只有系统或超级用户root可以向/dev/tty0进行写操作。

  5.其它类型  

  还针对很多不同的字符设备存在有很多其它种类的终端设备特殊文件。
  例如针对ISDN设备的/dev/ttyIn终端设备等。

相关阅读:

解析pty与tty终端文件
CentOS6.2关闭tty的方法

    
[2]Linux下建议的变量命名规则
    来源: 互联网  发布时间: 2013-12-24

(1)变量名必须有一定的意义,并且意义准确。例如有一个变量用于保存图书的数目,可以命名为number_of_book或者num_of_book。不建议使用i,因为它没有意义。也不建议使用number或book,因为意义不准确。

(2)不建议大小写混用。如定义一个计数变量,int nCount;这在Windows中是一个很好的变量名,其中nCount的首字母n用来说明这个变量的类型是int。但在Linux下不建议大小写混合使用,一般标识符只由小写字母,数字和下划线构成。

(3)在失去意义的情况下,尽量使用较短的变量名。例如有一个变量,用于暂时存储一个计数值,把变量命名为tmp_count显然要比this_is_a_temperary_counter好。

(4)不采用匈牙利命名法表示变量的类型。如int nCount;n用于说明变量的类型,在Linux中不建议这样命名变量。

(5)函数名应该以动词开头,因为函数是一组具有特定功能的语句块。比如一个函数,它用于取得外部输入的数值,则可以命名为get_input_number。

(6)尽量避免使用全局变量。


    
[3]dos文件在linux中显示^M问题的解决方法
    来源: 互联网  发布时间: 2013-12-24

几种去除^M的方法:

1、 cat filename1 | tr -d "\r" > newfile

2、 sed -e "s/^V^M//" filename > outputfilename

3、vi: 用vi打开文件
(1). 按ESC键
(2). 输入:%s/^M//g (wenhao测试此方式可用)
确定 ^M是使用 "CTRL-V CTRL-M" 而不是字面上的 ^M。这个正则式将替换所有回车符前的 ^M为空($是为了保证^M出现在行尾)

4、一些linux版本有 dos2unix 程序,可以用来祛除^M

5、用vim
输入 :set notextmode
经过上面的处理以后,^M是不存在了,但是换行不成功。所有的东西都在一行上面,看着很费劲。这说明处理的时候文件缺少"\n",可以在替换的时候添加上即可:

代码如下:
cat filename | tr "\r" "\n" > newfile

    
最新技术文章:
▪linux系统中的列出敏感用户的脚本代码
▪a10 config backup for aXAPI
▪一键备份gitolite服务器的Shell脚本
▪nagios 分发文件实现代码
▪阿里云云服务器Linux系统更新yum源Shell脚本
▪一个监控LINUX目录和文件变化的Shell脚本分享
▪Linux下实现SSH免密码登录和实现秘钥的管理、...
▪Shell正则表达式之grep、sed、awk实操笔记
▪3个备份系统文件并邮件发送的Shell脚本分享
▪CentOS 6.3下给PHP添加mssql扩展模块教程
▪监控网站是否可以正常打开的Shell脚本分享
▪shell脚本编程之if语句学习笔记
▪shell脚本编程之循环语句学习笔记
▪shell脚本编程之case语句学习笔记
▪Shell脚本实现的阳历转农历代码分享
▪Shell脚本实现复制文件到多台服务器的代码分...
▪Shell脚本实现批量下载网络图片代码分享
▪Shell脚本实现检测文件是否被修改过代码分享
▪Shell脚本数组用法小结
▪Shell脚本批量重命名文件后缀的3种实现
▪C语言实现的ls命令源码分享
▪Linux下查找后门程序 CentOS 查后门程序的shell脚...
▪Shell 函数参数
▪linux shell 自定义函数方法(定义、返回值、变...
▪Shell实现判断进程是否存在并重新启动脚本分...
▪Shell脚本break和continue命令简明教程
▪Shell脚本函数定义和函数参数
▪让代码整洁、过程清晰的BASH Shell编程技巧
▪shell常用重定向实例讲解
▪awk中RS、ORS、FS、OFS的区别和联系小结
 


站内导航:


特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

©2012-2021,,E-mail:www_#163.com(请将#改为@)

浙ICP备11055608号-3