檔案描述符和檔案流之間的轉換

2021-08-10 10:10:05 字數 547 閱讀 7184

file *fdopen(int fildes, const char *type);

這個函式很有用的,功能是將乙個流關聯到乙個開啟的檔案號filedes上,

該filedes可以是open、pipe、dup、dup2和creat等呼叫返回的結果

type指定流開啟方式,同fopen的開啟方式,如"a", "r","w"等等

fdopen的流開啟方式服從filedes的開啟方式,比如filedes的open指定o_rdonly,那麼fdopen也只能指定"r"的開啟方式了。

用fdopen的好處很明顯,如果你不得已只能開啟檔案號,比如socket或者dup呼叫,但又想用fprintf,fscanf等流操作來進行讀寫,那麼就再fdopen一次好了。

int fileno(file stream);

用fileno有什麼好處呢?你用fopen開啟了檔案,但是又想用flock或者lockf來給檔案加鎖,或者用fcntl來進行某些底層的操作,

但上述這些函式只能對開啟的檔案號操作,而不能對開啟流,這時候就用fileno再flock、lockf、fcntl好了。

檔案描述符和檔案流之間的轉換

file fdopen int fildes,const char type 這個函式很有用的,功能是將乙個流關聯到乙個開啟的檔案號filedes上,該filedes可以是open pipe dup dup2和creat等呼叫返回的結果 type指定流開啟方式,同fopen的開啟方式,如 a r w...

檔案流和 檔案描述符

include apue.h int glob 6 int main void else if pid 0 i printf pid d,glob d,var d n getpid glob,var sprintf buf,d n i write stdout fileno,buf,strlen b...

檔案流和檔案描述符

檔案流和檔案描述符 檔案流和 檔案描述符 2011 10 19 16 08 apue 中的一道課後題 習題8.1 include apue.h int glob 6 int main void else if pid 0 i printf pid d,glob d,var d n getpid gl...