/ dev / tty有什么特别之处?

时间:2011-12-15 03:24:16

标签: unix

ls -la /dev/tty显示输出:

crw-rw-rw- 1 root tty 5, 0 Dec 14 22:21 /dev/tty

开头的c是什么意思?当我做pwd > /dev/tty之类的事情时,它会打印到标准输出。文件/ dev / tty包含什么?

3 个答案:

答案 0 :(得分:77)

'c'表示它是一个角色设备。 tty是一个特殊文件,代表当前进程的“控制终端”。

角色设备

Unix支持“设备文件”,它们根本不是真正的文件,而是支持硬件设备的文件类访问点。 “字符”设备是逐字节接口的设备(与缓冲IO相反)。

<强> TTY

/ dev / tty是一个特殊文件,表示当前进程的终端。因此,当您echo 1 > /dev/tty时,您的消息(“1”)将出现在您的屏幕上。同样,当您cat /dev/tty时,您的后续输入会重复(直到您按Ctrl-C)。

/dev/tty不会“包含”任何内容,但您可以从中读取并写入(为了它的价值)。我不能想到它的好用,但有类似的文件对简单的IO操作非常有用(例如/dev/ttyS0通常是你的串口)

此引用来自http://tldp.org/HOWTO/Text-Terminal-HOWTO-7.html#ss7.3

  

/ dev / tty代表当前的控制终端(如果有)   处理。找出哪些tty附加到哪些进程使用   shell提示符下的“ps -a”命令(命令行)。看着那(这   “tty”栏目。对于你所在的shell进程,/ dev / tty就是   您正在使用的终端。在shell提示符下键入“tty”以查看内容   它是(参见手册第tty(1)页)。 / dev / tty就像链接一样   具有一些附加功能的实际终端设备名称   C程序员:参见手册页tty(4)。

以下是手册页:http://linux.die.net/man/4/tty

答案 1 :(得分:9)

/dev/tty是当前进程的控制终端(如果有)的同义词。正如jtl999所说,它是一个字符特殊文件;这就是c输出中ls -l的含义。

man 4 ttyman -s 4 tty应该会为您提供更多信息,或者您可以在线阅读手册页here

顺便说一下,pwd > /dev/tty 必然必须打印到shell的标准输出(尽管它是pwd命令的标准输出)。如果shell的标准输出已被重定向到终端以外的其他位置,/dev/tty仍然引用终端。

您也可以阅读/dev/tty,通常会从键盘上读取。

答案 2 :(得分:3)

&#39; c&#39;意味着它是一个角色特殊文件。