有人提到一个进程总是打开三个不同的文件。这是什么意思?它们是什么文件?
答案1
打开的文件不是磁盘上的文件。它们是流(伪文件)、stdin (0)、stdout (1) 和 stderr (2)。以下是相关摘录POSIX标准:
具有关联缓冲的文件称为流,并被声明为指向已定义类型 FILE 的指针。 fopen() 函数将为流创建某些描述性数据,并返回一个指针以在所有后续事务中指定该流。通常,存在三个打开的流,其常量指针在标头中声明并与标准打开文件关联。
在程序启动时,应预定义三个流,无需显式打开:标准输入(用于读取常规输入)、标准输出(用于写入常规输出)和标准错误(用于写入诊断输出)。打开时,标准错误流未完全缓冲;当且仅当可以确定标准输入和标准输出流不引用交互设备时,标准输入和标准输出流才被完全缓冲。