Linux 如何使用 /dev/tty 和 /dev/tty0

Ron*_*nce 8 linux terminal tty devices

通过测试此问题提供的方法,我可以看到 /dev/tty 和 /dev/tty0 之间的区别。但我真的很想知道这些设备的实际用途(比如它们将被使用的情况)。

Inc*_*rsi 16

/dev/tty是当前进程的控制 tty ,对于实际打开此特殊文件的任何进程。它不一定是虚拟控制台设备(/dev/ttyn),可以是、串行端口等。如果控制 tty 不是虚拟控制台,那么该进程不必与控制台设备交互,即使它是伪设备实际上是在系统控制台上实现的。例如。对于本地运行的 X?server 下终端模拟器中的 shell,所述程序形成如下交互链:

???Unix外壳
?????? /dev/pts/2(?/dev/tty对于它的进程)
?内核 pty 驱动程序
????/dev/ptmx
?终端模拟器
????X Window 协议
???X 服务器
?????? /dev/tty7(?/dev/tty为服务器)
?系统控制台
zxc??[_???]
????用户

使用/dev/tty由用户态程序包括:

  • 向控制终端写入一些内容,忽略所有重定向和管道;
  • 制作一个 ioctl()——见 tty_ioctl(4);
  • 例如,从终端分离 (TIOCNOTTY)。

/dev/tty0是当前活动的(i.?e。在监视器上可见的)虚拟控制台的的操作系统。这个特殊的文件不太可能被系统软件大量使用,但/dev/console实际上是tty0/dev/console系统日志守护程序的“别名”,并且有时被内核本身大量使用。

实验以示区别:运行一个root上壳tty3Ctrl+ Alt+ F3),或在终端模拟器。现在

# sleep 2; echo test >/dev/tty
Run Code Online (Sandbox Code Playgroud)

然后迅速Ctrl+ Alt+ F2,等待两秒钟,Ctrl+ Alt+什么回来。你在哪里看到输出?
现在对/dev/tty0.