stdin、stderr和stdout在Linux中是如何实现的?它们肯定不是物理文件。它们必须是由操作系统针对每个进程在RAM中创建的某种临时存储安排。
这些数据结构数组是否单独附加到每个进程上?
stdin、stderr和stdout在Linux中是如何实现的?它们肯定不是物理文件。它们必须是由操作系统针对每个进程在RAM中创建的某种临时存储安排。
这些数据结构数组是否单独附加到每个进程上?
FILE*
包装器)。文件描述符是一个索引进程内核中的每个进程数据结构的数字。该数据结构记录了进程打开的I/O通道,I/O通道是我自己定义的术语,指文件、设备、套接字或管道。
按照惯例,表格中的第一个条目具有索引0,并称为标准输入,1是标准输出,2是标准错误通道。这只是Unix程序中的一种约定,就内核而言,这些数字并没有什么特别之处。
每个I/O系统调用(如read
、write
等)都需要一个文件描述符,以指示调用应在哪个通道上进行操作。