Unix標準IO庫相關函式總結之開啟關閉流 一

2021-09-16 21:14:18 字數 1336 閱讀 1620

在unix相關的檔案io中幾乎所有的函式都用到了檔案描述符,檔案描述符是開啟乙個檔案時返回的乙個可用的最小的檔案描述標識。相應的在unix標準io相關的函式中,幾乎每個函式都用到了file資料型別。本小結簡單介紹一下file結構體的內容。

file實際上是乙個struct的typedef,可以在/usr/include/stdio.h中找到它的定義為:

typedef _io_file file;
_io_file_的定義在檔案/usr/include/libio.h中,我們可以看到它的具體定義為:

struct _io_file 

;

從上面的struct中可以觀察到file中是有檔案描述符標誌的,即為fileno引數。

開啟標準檔案io流的方法有如下三個:

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 fd,

const

char

* type)

;

上述三個函式區別以及使用場景說明:

引數說明:

開啟模式說明:

上述所有的模式後面都加上b表示對二進位制檔案的操作(rb,wb,ab,rb+,wb+,ab+)。

注意:對於fdopen函式由於檔案已經由檔案描述符開啟,此時w模式時將不清除檔案內容,追加模式不常見檔案。

當以讀寫模式開啟檔案時候,將有一些限制。如果中間沒有fflush,fseek,fsetpos以及rewind函式,標註輸出之後不能直接進行輸入;如果沒有fseek,fsetpos或者rewind,或者乙個輸入沒有到達檔案尾,則輸入操作之後不能跟輸出操作。

一般情況下在關閉檔案流之前通常先使用fflush重新整理緩衝區防止資料丟失,關閉標準檔案流使用的函式為:

#include int fclose(file* fp);

Unix學習筆記 標準I O庫

流和file物件 對於標準i o庫,他們的操作時圍繞流進行的,當標準i o庫開啟或者建立乙個檔案時,我們使用乙個流和乙個檔案相關聯 對於ascii字符集,乙個字元用乙個位元組表示,對於標準字付集,乙個字元可用多個位元組表示。標準i o檔案流可用於單位元組或多位元組集。流的定向決定了讀 寫的字元是單位...

Unix學習筆記 標準I O庫

流和file物件 對於標準i o庫,他們的操作時圍繞流進行的,當標準i o庫開啟或者建立乙個檔案時,我們使用乙個流和乙個檔案相關聯 對於ascii字符集,乙個字元用乙個位元組表示,對於標準字付集,乙個字元可用多個位元組表示。標準i o檔案流可用於單位元組或多位元組集。流的定向決定了讀 寫的字元是單位...

UNIX環境程式設計學習 標準IO庫

在檔案io中,所有的函式都是使用檔案描述符作為讀寫的物件。但在標準i o庫中,函式的操作物件是乙個流 stream 當用標準i o庫開啟乙個檔案時,就會使乙個stream與該檔案繫結。流的定向 流的定向可以看作是流的乙個屬性。它決定了流所進行的讀取或寫入操作是單位元組還是多位元組 在國際字符集中乙個...