九_进程关系1+1-终端设备

在Linux操作系统中,/dev/tty、/dev/tty0和/dev/console是三个特殊的设备文件,它们在终端控制和输入/输出过程中扮演着重要的角色。尽管它们看起来很相似,但实际上它们之间存在一些重要的区别。本文将详细介绍这三个设备文件之间的区别以及它们在Linux系统中的作用。

在这里插入图片描述
在linux中,每一个系统与用户进行交流的界面称为终端(用户与进程交流的窗口),每一个从此终端开始运行的进程,都会依附于这个终端,这个终端就称为这些进程的控制终端,当控制终端被关闭时,相应的进程都会自动关闭。

比如在窗口(终端)执行 ./test 程序。所有的输出显示,输入显示,都是用于交流的窗口,比如输入 CTRL C。 则窗口收到该指令后 就会去停止刚才运行的程序,同样 程序输出的结果以及日志信息 都通过窗口反馈给用户。其实就是这么简单,之前想复杂了。

一 控制终端(/dev/tty)
控制终端,即当前用户正在使用的终端,是一个映射,指向当前所使用的真正的虚拟终端(例如/dev/tty1,/dev/pts/0)。往/dev/tty下写数据就是写到当前终端,实际最终就是写到最终映射到的实际 /dev/tty1,/dev/pts/0等虚拟终端

所以

/dev/tty and /dev/console 可以简单的理解为 他们俩都代表当前打开的实际终端的链接,是映射到某个实际的虚拟终端的链接终端。映射的过程是 当 tty_open的时候根据具体的情况,映射到对应到具体的虚拟终端设备。

那么那些进程有控制终端呢?
如果当前进程有控制终端(Controlling Terminal)的话(从此终端开始运行的进程,如shell命令,或者直接执行的可执行程序),那么当前/dev/tty就是当前进程的控制终端的设备特殊文件。

使用命令”tty”可以查看它 具体对应哪个实际终端设备。比如 我在ubnutu 上打开三个终端窗口 分别执行 tty指令 获取当前窗口对应的实际的虚拟终端:
在这里插入图片描述
可以看到 打开的三个终端窗口分别有自己对应的实际的虚拟终端,各自不同。

可以使用命令”ps –ax”来查看进程与哪个控制终端相连。如:
在这里插入图片描述
ps -a 显示从当前终端开始运行的进程, 即ps 命令。对应的当前实际的虚拟终端是 pts/4与下方 执行tty指令 获取当前窗口对应的实际的虚拟终端 是一致的。

二 虚拟终端 : /dev/ttyn 、 /dev/pts/n
/dev/ttyn
虚拟终端,例如ubuntu不启动图形界面时,那么就会默认连接到/dev/tty1这个虚拟终端。

/dev/pts/n
伪终端,例如网络登录的telnet就是使用伪终端。这是UNIX98的实现风格,slave为/dev/pts/n是,master一般为/dev/ptmx。

三 /dev/ttySn
串行终端,串口设备对应的终端。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Linux老A

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值