fdopen函数 相关函数:fopen,open,fclose
表头文件:#include
定义函数:FILE * fdopen(int fildes,const char * mode);
函数说明:
fdopen取一个现存的(我
们可能从 o p e n , d u p , d u p 2 , f c n t l或p i p e函数得到此文件描述符) ,并使一个标准的I /
O流与该描述符相结合。此函数常用于由创建管道和网络通信通道函数获得的描述符。因为这些特殊类型的文件不能用标准I/O
fopen函数打开,首先必须先调用设备专用函数以获得一个文件描述符,然后用f d o p e n使一个标准I / O流与该描述符相结合。
fdopen()会将参数fildes 的,转换为对应的后返回。参数mode 字符串
则代表着文件指针的流形态,此形态必须和原先文件描述词读写模式相同。
mode有下列几种形态字符串:
r 打开,该文件必须存在。
r+ 打开可读写的文件,该文件必须存在。
w 打开只写文件,若文件存在则文件长度清为0,即该文件内容会消失。若文件不存在则建立该文件。
w+ 打开可读写文件,若文件存在则文件长度清为零,即该文件内容会消失。若文件不存在则建立该文件。
a 以附加的方式打开只写文件。若文件不存在,则会建立该文件,如果文件存在,写入的数据会被加到文件尾,即文件原先的内容会被保留。
a+ 以附加方式打开可读写的文件。若文件不存在,则会建立该文件,如果文件存在,写入的数据会被加到文件尾后,即文件原先的内容会被保留。
对于f d o p e n,t y p
e参数的意义则稍有区别。因为该描述符已被打开,所以 f d o p e n为写而打开并不截短该文件。(例如,若该描述符原来是由 o p e
n函数打开的,该文件那时已经存在,则其O _ T R U N C标志将决定是否截短该文件。f d o p e
n函数不能截短它为写而打开的任一文件。 )另外,标准I /
O添加方式也不能用于创建该文件(因为如若一个描述符引用一个文件,则该文件一定已经存在)。
上述的形态字符串都可以再加一个b字符,如rb、w+b或ab+等组合,加入b
字符用来告诉函数库打开的文件为二进制文件,而非纯文字文件。不过在POSIX系统,包含Linux都会忽略该字符。由fopen()所建立的新文件会具
有S_IRUSR|S_IWUSR|S_IRGRP|S_IWGRP|S_IROTH|S_IWOTH(0666)权限,此文件权限也会参考umask
值。
返回值:转换成功时返回指向该流的文件指针。失败则返回NULL,并把存在errno中。
范例:#include
main()
{
FILE * fp =fdopen(0,”w+”);
fprintf(fp,”%s\n”,”hello!”);
fclose(fp);
}
执行:hello!
阅读(2344) | 评论(0) | 转发(0) |