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

what's the relationship between /dev/tty and stdin/stdout/stderr?

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

int tty_fd = open("/dev/tty", O_RDWR);

那么,下面的代码有什么区别(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));

stdxx 与 link 到 /dev/tty 相同吗?

除非没有重定向“/dev/tty”将用于显示标准输出或标准错误。您可以有选择地将 stdout/stderr 输出到 /dev/tty.

以外的不同文件描述符上