【问题标题】:linux stdin, stdout, stderr [duplicate]linux标准输入,标准输出,标准错误[重复]
【发布时间】:2012-12-19 18:11:32
【问题描述】:

可能重复:
Writing to stdin and reading from stdout (UNIX/LINUX/C Programming)

我有一个关于linux系统stdio的简单问题。

如果程序写入标准输入会发生什么? 还是从 stdout、stderr... 读取?

我想从操作系统的角度了解细节。 提前谢谢你

【问题讨论】:

标签: linux stdio


【解决方案1】:

Linux 上的 stdio 流与文件描述符相关联,Linux 和 UNIX 上的所有文件和流也是如此。最初,这些文件描述符与一个 tty 相关联,它实际上只是一个文件(某种意义上的)。最初,这些文件的文件描述符映射到这些 TTY。用户或您的程序也可以重新映射它们。例如,我可以将 stderr 重新映射到日志文件,或将 stdin 重新映射到一些预烘焙的输入。

【讨论】:

  • Stdio 流不与ttys 关联,而是与文件描述符关联。
  • @BasileStarynkevitch;这些文件描述符对 TTY 开放。为什么投反对票?
  • @BasileStarynkevitch:已修复。你会撤销否决票吗?
  • @Linuxios 文件描述符是任意文件描述符。没有什么可以限制它们最初绑定到 tty。事实上,当一个进程正在读取或写入管道(想想 shell),或者该进程由另一个进程运行时,情况并非如此……它们甚至可能是套接字。事实上,唯一可以确定的是它们在 POSIX 环境中分别对应文件描述符 0、1 和 2。
  • @SylvainDefresne:没有什么可以限制他们,如果没有设置其他设置,那只是他们的默认设置。