fdopen取一個現存的檔案描述符,並使一個標準的I / O流與該描述符相結合。此函式常用於由創建管道和網路通信通道函式獲得的描述符。因為這些特殊類型的檔案不能用標準I/O fopen函式打開,首先必須先調用設備專用函式以獲得一個檔案描述符,然後用fdopen使一個標準I/O流與該描述符相結合。
基本介紹
- 中文名:fdopen
- 適用領域範圍:計算機
- 適用領域範圍:計算機
- 相關函式:fopen,open
- 表頭檔案:#include<stdio.h>
- 定義函式:FILE * fdopen
fdopen函式,函式說明,
fdopen函式
表頭檔案:#include<stdio.h>
定義函式:FILE * fdopen(int fildes,const char * mode);
函式說明
FILE* fdopen(int fd, const char* type);
fdopen取一個現存的檔案描述符(我們可能從 open,dup,dup2,fcntl,pipe,socket,socketpair或accept函式得到此檔案描述符) ,並使一個標準的I/O流與該描述符相結合。此函式常用於由創建管道和網路通信通道函式獲得的描述符。因為這些特殊類型的檔案不能用標準I/O fopen函式打開,首先必須先調用設備專用函式以獲得一個檔案描述符,然後用fdopen使一個標準I/O流與該描述符相結合。
則代表著檔案指針的流形態,此形態必須和原先檔案描述詞讀寫模式相同。
mode有下列幾種形態字元串:
r 打開唯讀檔案,該檔案必須存在。
r+ 打開可讀寫的檔案,該檔案必須存在。
w 打開只寫檔案,若檔案存在則檔案長度清為0,即該檔案內容會消失。若檔案不存在則建立該檔案。
w+ 打開可讀寫檔案,若檔案存在則檔案長度清為零,即該檔案內容會消失。若檔案不存在則建立該檔案。
a 以附加的方式打開只寫檔案。若檔案不存在,則會建立該檔案,如果檔案存在,寫入的數據會被加到檔案尾,即檔案原先的內容會被保留。
a+ 以附加方式打開可讀寫的檔案。若檔案不存在,則會建立該檔案,如果檔案存在,寫入的數據會被加到檔案尾後,即檔案原先的內容會被保留。
對於fdopen,type參數的意義則稍有區別。因為該描述符已被打開,所以 fdopen為寫而打開並不截斷該檔案。(例如,若該描述符原來是由 o p e n函式打開的,該檔案那時已經存在,則其O_TRUNC標誌將決定是否截斷該檔案。fdopen函式不能截短它為寫而打開的任一檔案。 )另外,標準I/O添加方式也不能用於創建該檔案(因為如若一個描述符引用一個檔案,則該檔案一定已經存在)。