如何在linux中实现stdin,stdout,stderr?

Kaw*_*iKx 2 unix linux stdin stdout stderr

在LINUX中如何实现stdin,stderr,stdout?

它们肯定不是物理文件.对于每个进程,它们必须是由OS在RAM中制作的某种临时存储装置.

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

Fre*_*Foo 5

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

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

每个I/O系统调用(read,write等)都会获取一个文件描述符,指示调用应该在哪个通道上运行.