我是靠谱客的博主 冷傲饼干,最近开发中收集的这篇文章主要介绍ttys和tty_tty和console区别和联系,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

tty是一类char设备的通称,它们有相同的特性,比如对^C的处理,驱动使用tty_register_driver注册一个tty。

/dev/console是一个虚拟的tty,它映射到真正的tty上,如何映射等会再说。

console有多种含义,这里特指printk输出的设备,驱动使用register_console注册一个console。最后一个注册的conole称为prefer console,init进程的stdin, stdout和stderr都是这个conole

console和tty有很大区别:console是个只输出的设备,功能很简单,只能在内核中访问;tty是char设备,可以被用户程序访问。

实际的驱动比如串口对一个物理设备会注册两次,一个是tty,一个是console,并通过在console的结构中记录tty的主次设备号建立了联系。

内核中,tty和console都可以注册多个。当内核命令行上指定console=ttyS0之类的参数时,首先确定了printk实际使用那个

console作为输出,其次由于console和tty之间的对应关系,打开/dev/console时,就会映射到相应的tty上。用一句话说:

/dev/console将映射到默认console对应的tty上。

顺便说一句,console=ttyS0和/dev/ttyS0包含相同的设备名字完全是巧合,不同也没事。

============================================================================

控制台是什么?

我们经常说的控制台,就是指控制台终端(/dev/ttyn, console,在UNIX系统中计算机显示器就叫做控制台终端)。通常pc,显示器和键盘构成控制台。

并且控制台终端与一些设备特殊文件关联:tty0、tty1、tty2。。。ttyn

通常情况下/dev/console与tty0关联。

ttyn:

ttyn是虚拟终端。有tty1-tty6,通过CTRL+ALT+【F1-F6】转换。开始登陆时,默认登陆的是tty1.

在ubuntu中,虚拟终端有tty1-tty63

tty是控制终端,tty是表示当前tty设备。登陆的控制终端为tty,映射到实际的虚拟终端设备。如tty1、tty2等。

在命令行模式下,是映射到虚拟终端。在图形界面下,被映射到/dev/pts伪终端上。如/dev/pts/0、/dev/pts/1等。

tty0是虚拟终端的别名,无论使用哪个虚拟终端,系统产生的信息都会发到控制终端(即控制台)上。所以能在显示器上看到不同虚拟终端的信息。

echo "test tty" > tty

在当前的终端显示结果如下:

test tty

tty命令,可以查看当前的控制台或虚拟终端,如果在x-window下面使用,查看到的是伪终端设备。

/dev/ttyS* 是串行终端设备

/dev/pty* 伪终端,逻辑上的终端设备。 用途:telnet远程登陆。假设通过/dev/ptym3方式,自动创建/dev/pts/3。

/dev/ptym是pty的主设备(master),/dev/pts 是pty的从设备(slave)。向pty主设备写的数据,作为pty从设备的输入,向pty从设备写的数据,作为pty主设备的输入。从而,伪终端就像双向管道一样。

telnet应用程序 —— /dev/pts/3 ——/dev/ptym3—— GETTY

注意:/dev/pts/ 是devpts文件系统(伪文件系统),并不是设备文件系统(devfs)

最后

以上就是冷傲饼干为你收集整理的ttys和tty_tty和console区别和联系的全部内容,希望文章能够帮你解决ttys和tty_tty和console区别和联系所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(40)

评论列表共有 0 条评论

立即
投稿
返回
顶部