什么是UNIX中的/ dev/tty?

Bru*_*uce 27 unix

stdin和stdout文件描述符都指向它.它是如何工作的?有人可以指出一个很好的资源来理解与它交互的UNIX终端和系统调用.

das*_*ght 42

dev/tty是表示当前控制台的文件系统对象.从命令行将文件复制到此"目录"中会将这些文件的内容打印到控制台:

cp myfile.txt /dev/tty
Run Code Online (Sandbox Code Playgroud)

相当于

cat myfile.txt
Run Code Online (Sandbox Code Playgroud)

这些对象允许您使用熟悉的文件API与控制台进行交互.这是一种将控制台API与文件API统一的巧妙方法.您可以使用fopen,fprintf等与控制台交互,方式与您与常规文件交互的方式相同.

此示例写入"Hello, world\n"终端:

#include <stdio.h>

int main (int argc, const char * argv[]) {
    FILE *f = fopen("/dev/tty", "w");
    fprintf(f, "Hello, world!\n");
    return 0;
}
Run Code Online (Sandbox Code Playgroud)

  • @Bruce伪终端是沿着"/ dev/tty"行的抽象,其表示例如不对应于物理终端的其他逻辑终端.您可以通过打开两个xterm窗口在其中看到它们,在其中键入`tty`以查看其伪终端名称,然后将一个窗口中的文件复制到另一个窗口中.例如,如果你键入`tty`并在一个窗口中输入`/ dev/ttys002`而在另一个窗口中输入`/ dev/ttys000`,则可以将一个文件从一个xterm复制到`ttys ...`其他,内容将显示在另一个窗口中. (5认同)
  • 什么是伪终端?我如何与他们互动? (2认同)