进程总是打开哪三个文件?

uni*_*bie 7 process standard files

有人提到一个进程总是打开三个不同的文件。这是什么意思?它们是什么文件?

jor*_*anm 8

打开的文件不是磁盘上的文件。它们是流(伪文件)、stdin (0)、stdout (1) 和 stderr (2)。以下是POSIX 标准的相关摘录:

具有关联缓冲的文件称为流,并被声明为指向已定义类型 FILE 的指针。fopen() 函数应为流创建某些描述性数据,并返回一个指针以在所有后续事务中指定流。通常,有三个打开的​​流,在标头中声明了常量指针,并与标准打开文件相关联。

在程序启动时,应预定义三个流,无需明确打开:标准输入(用于读取常规输入)、标准输出(用于写入常规输出)和标准错误(用于写入诊断输出)。打开时,标准错误流没有完全缓冲;当且仅当可以确定流不是指交互设备时,标准输入和标准输出流才被完全缓冲。