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

时间:2013-10-18 14:37:25

标签: linux unix stdout stdin stderr

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

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

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

1 个答案:

答案 0 :(得分:5)

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

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

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