stdin,stderr和stdout是文件描述符(或FILE*它们周围的包装器,如果你的意思是带有这些名称的C stdio对象).文件描述符是索引内核中每个进程数据结构的数字.该数据结构记录了进程已打开的I/O通道,I/O通道是我的文件,设备,套接字或管道的临时术语.
按照惯例,表中的第一个条目具有索引0并且称为标准输入,1是标准输出,2是标准错误通道.这只是Unix程序中的惯例; 就内核而言,这些数字没有什么特别之处.
每个I/O系统调用(read,write等)都会获取一个文件描述符,指示调用应该在哪个通道上运行.