5

标准输入、标准错误、标准输出在 LINUX 中究竟是如何实现的?

它们当然不是物理文件。它们必须是操作系统为每个进程在 RAM 中进行的某种临时存储安排。

这些数组数据结构是否分别附加到每个进程?

4

1 回答 1

5

stdin、stderr 和 stdout 是文件描述符(或FILE*围绕它们的包装器,如果您指的是带有这些名称的 C stdio 对象)。文件描述符是索引内核中每个进程数据结构的数字。该数据结构记录了进程打开了哪些 I/O 通道,I/O 通道是我对文件、设备、套接字或管道的特设术语。

按照惯例,表中的第一个条目的索引为 0,称为标准输入,1 是标准输出,2 是标准错误通道。这只是 Unix 程序中的约定;就内核而言,这些数字没有什么特别之处。

每个 I/O 系统调用(readwrite等)都带有一个文件描述符,该文件描述符指示调用应该在哪个通道上操作。

于 2013-10-18T15:03:03.990 回答