/dev/tty 和 stdin/stdout/stderr 之间有什么关系?

Lub*_*bin 5 linux stdin stdout tty stderr

我知道它们有不同的文件描述符,stdxx 可以重定向。

int tty_fd = open("/dev/tty", O_RDWR);
Run Code Online (Sandbox Code Playgroud)

那么,下面的代码有什么区别(stdxx 未重定向):

n = read(tty_fd, buf, sizeof(buf));
n = read(STDIN_FILENO, buf, sizeof(buf));

n = write(tty_fd, buf, sizeof(buf));
n = write(STDOUT_FILENO, buf, sizeof(buf));
Run Code Online (Sandbox Code Playgroud)

stdxx 与 /dev/tty 的链接相同吗?

小智 1

除非没有重定向,否则“/dev/tty”将用于显示标准输出或标准错误。您可以有选择地将 stdout/stderr 输出到 /dev/tty 之外的不同文件描述符上。