在LINUX中如何准确实现stdin,stderr,stdout?
它们当然不是物理文件。它们必须是操作系统为每个进程在RAM中进行的某种临时存储安排。
这些数组数据结构是否分别附加到每个进程?
stdin,stderr和stdout是文件描述符(或FILE*
环绕它们的包装器,如果您的意思是带有这些名称的C stdio对象)。文件描述符是索引内核中每个进程数据结构的数字。该数据结构记录一个进程打开了哪些I / O通道,I / O通道是我对文件,设备,套接字或管道的特殊术语。
按照惯例,表中的第一个条目的索引为0,称为标准输入,1为标准输出,2为标准错误通道。这只是Unix程序中的一个约定。就内核而言,这些数字没有什么特别的。
每个I / O系统调用(read
,write
等)都带有一个文件描述符,该文件指示该调用应在哪个通道上运行。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句