檔案IO大綱

2022-02-18 17:35:13 字數 2855 閱讀 6900

檔案流與檔案描述符的區別

a)任何程序在執行時都預設開啟3

個流物件,(

stdin, stdout, stderr

)它們都有對應的檔案描述符,其檔案描述符分別為0,

1,2,以後開啟的檔案描述符的值一般都選用未使用的最小值

b)linux為管理每個每個程序開啟的檔案,在程序的私有結構體

struct task_struct

(即程序

pcb,由核心提供)中,對任何程序來說,都將為這個結構體專門分配管理開啟檔案資訊的表項,用以指示當前程序開啟的檔案結構體,通俗點解釋就是每乙個程序都在核心的

struct task_struct

結構體中有乙個資訊表項,然後這個表項指向這個程序所開啟的檔案列表,然後檔案列表中的檔案描述符指向具體開啟的檔案結構資訊

c)檔案描述符與檔案流的轉換操作

linux為使用者層提供了函式

fileno( )

以從檔案流中讀取其檔案描述符

extern int fileno( file *__stream)

函式fdopen( )

將實現某個流與乙個檔案描述符的連線

extern file *fdopen ( int __fd,  __const char *__modes),這裡需要使用

fprintf( )

來操作流物件。

有了上述對流,對檔案描述符的較深入的了解,接下來學習posix

標準下的檔案

io管理就會有更多自己的體會。

fopen( ), fread( ), fwrite( ), fclose( ), open( ), read( ), write( ), close( ), creat( ), lseek( )

檔案開啟flags

標識一覽:

o_rdonly

o_wronly

o_rdwr,

o_creat

o_excl若同o_creat

一起使用,如果檔案已經存在報錯

o_noctty 如果開啟終端裝置,不將其作為程序控制終端機

o_trunc 若檔案存在並且可讀可寫,將檔案內容清空

o_nonblock以非阻塞方式開啟,執行後立即返回

o_ndelay 同

o_nonblock

o_sync 同步方式開啟檔案,關閉檔案前,將快取寫入

o_largefile 在

32位系統下支援大於

2g檔案開啟操作

檔案開啟許可權一覽:

s_i(

r/w/x

)(usr/grp/oth

),s_irwxu, s_irwxo, s_irwxg

以上是系統函式許可權設定標識,使用者函式不同,如「r+

」「w+

」等

自己做筆記新增進來。

檔案控制fcntl( )函式用於修改某個檔案描述符的特殊屬性,複製檔案描述符,獲取檔案描述符,設定檔案描述符,獲取檔案狀態設定檔案狀態

對映檔案到記憶體mmap( )

鎖定/解鎖檔案

函式flock( )

和 函式

fcntl( )

都可以提供對檔案的鎖操作,但是

flock( )

只能鎖定整個檔案,不能鎖定某個區域,而

fcntl( )

可以提供任意位置的內容鎖定。

目錄流的基本操作-----

目錄檔案中儲存的是該目錄下所有的檔案以及子目錄檔案的資訊

a)開啟/

關閉目錄檔案

dir *opendir( const char *dirname)

dir *closedir( const char *dirname) 返回乙個目錄流指標

b)讀/

寫目錄內容

c)定位目錄內容

d)新增和刪除目錄

e)獲取當前工作路徑

7.以上關於檔案的操作只是基本的關於檔案操作內容,還有一塊內容,是關於對普通檔案,連線檔案及目錄檔案屬性的讀取修改等操作,這塊內容大家自己學習,不進行講授。

系統io(檔案io)

檔案描述符 檔案描述符 已開啟檔案的標誌,是非負整形數,當前可以最小作為新檔案的檔案描述符,預設範圍0 1024 可更改 檔案開啟 int open const char pathname,int flags,mode t mode 1.pathname 要開啟檔案的路徑 2.flags 開啟方式 ...

檔案系統操作大綱

檢視當前所有盤的掛載資訊 cat proc mounts badblocks v dev hda1 檢查磁碟hda1上的壞磁塊 fsck dev hda1 修復 檢查hda1磁碟上linux檔案系統的完整性 fsck.ext2 dev hda1 修復 檢查hda1磁碟上ext2檔案系統的完整性 e2...

IO操作 檔案IO

一 系統呼叫 系統呼叫實際上是作業系統 核心 提供的供使用者使用的介面函式。二 標準io函式和檔案io函式的關係 標準io是c庫內定義的函式,是凌駕於系統之上的,適用於任何的作業系統 檔案io是由linux系統提供的,只能在linux系統中使用,而不可以在其它作業系統中使用。標準io函式可以呼叫檔案...