《UNIX环境高级编程》笔记--打开流

下列三个函数打开一个标准IO流。

#include <stdio.h>
FILE* fopen(const char* restrict pathname, const char* restrict type);
FILE* freopen(const char* restrict pathname, const char* restrict type, FILE* restrict fp);
FILE* fdopen(int filedes, char* type);

三个函数,如果成功返回文件指针,失败则返回NULL。

三个函数的区别是:

fopen打开一个指定的文件。

freopen在一直指定的流上打开一个指定的文件,如若该流已经打开,则先关闭该流。如果该流已经定向,则freopen清除该

定向。此函数一般用于将一个指定的文件打开为一个预定的流:标准输入,标准输出或标准出错。

fdopen获取一个现有的文件描述符,并使一个标准的IO流与该描述符相结合。此函数常用与由创建管道和网络通信函数返回

的描述符,因为这些特殊类型的文件不能用标准IO fopen函数打开,所以我们必须先调用设备专用函数获取一个文件描述符,

然后用fdopen使一个标准IO流与该描述符相关联。


type参数指定对IO流的读写方式,详细如下表:

《UNIX环境高级编程》笔记--打开流_第1张图片

(使用b,使得标准IO可以区分文本文件和二进制文件)

注意:对于fdopen,type的意义稍有不同,因为该描述符已经被打开,所以fdopen为写而打开并不截短该文件,另外也不能

创建该文件。

总结一下上表的内容:

《UNIX环境高级编程》笔记--打开流_第2张图片


你可能感兴趣的:(《UNIX环境高级编程》笔记--打开流)