文件I/O&标准I/O库(2)

发表于:2007-06-08来源:作者:点击数: 标签:
简单介绍文件描述符和文件指针的转换。 使用两个函数,可以轻松实现两者的转换关系,这在一些场合(有时候用流式函数方便,但有时候有需要用文件描述符函数做些底层工作)还是很有用的。 int fileno(FILE *stream); The function fileno examines the argumen
简单介绍文件描述符和文件指针的转换。

使用两个函数,可以轻松实现两者的转换关系,这在一些场合(有时候用流式函数方便,但有时候有需要用文件描述符函数做些底层工作)还是很有用的。

int fileno(FILE *stream);

The function fileno examines the argument stream and returns its integer descriptor.

FILE *fdopen(int fildes, const char *mode);
FILE *freopen(const char *path, const char *mode, FILE *stream);

使用的时候,还是有些注意点的~

fdopen 函数,将一个文件指针与 fildes 的文件描述符相联系, mode 参数的值( "r", "r+", "w", "w+", "a", "a+")),要与 fildes 所代表文件的读写权限一致
在 fdopen 里设置 "w" "w+" 并不会象 fopen 那样,截断已存在的数据,还是会接着尾端写。

此函数常用于由创建管道和网络通信通道函数获得的插述符。因为这些特殊类型的文件不能用标准I/O fopen函数打开,首先必须先调用设备专用函数以获得一个文件描述符,然后用fdopen使一个标准I/O流与该描述符相结合。
freopen在一个特定的流上(由f p指示)打开一个指定的文件(其路径名由pathname 指示),如若该流已经打开,则先关闭该流。此函数一般用于将一个指定的文件打开为一个预定义的流:标准输入、标准输出或标准出错。

 

原文转自:http://www.ltesting.net

...