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