linux C 的檔案程式設計

風塵璞發表於2016-09-26

  檔案程式設計

系統呼叫是指作業系統提供給使用者的一組“特殊”介面,使用者程式可以通過這組“特殊”的介面來提供作業系統核心提供的服務。

最外層:application

其次層:shelllibrary routines

其次層:system call

最內層:kernel

 

Linux 檔案可分為:

1)普通檔案。

2)目錄檔案

3)連結檔案。

4)裝置檔案。

檔案描述符(fd): 1) 非負整數(從0開始)

                2)表示各種型別檔案。

一個程式的啟動:開啟三個檔案

1)標準輸入(鍵盤)

2)標準輸出(螢幕)

3)標準錯誤(螢幕、不走緩衝區)

系統呼叫檔案——開啟

Int open(const char * pathname, int flag, mode_t  mode)

Pathname: 開啟或建立檔案。

Flags: 證明此函式   O_CREAT | O_RDWR.

Mode: 建立許可權  0755

如: fd = open( “a.txt” O_CREAT | O_RDWR, 0755)

0755 分三組: 7:使用者, 5:同組成員  5:其他成員

——檔案關閉

   Close(fd)

——檔案讀取:

Int read(int fd, const void * buf, size_t length)

功能:從檔案描述符(fd)所指定的檔案讀length位元組到buf的緩衝區。

——檔案的寫入:

 功能:從檔案描述符(fd)所選定的緩衝區寫到檔案描述符(fd)所指定的檔案。

——定位:

Int  lseek(檔案指標, 位偏移, 起始點)

SEEK_SET:檔案開頭

SEEK_CUR:當前位置

SEEK_END:檔案結尾

 

    庫函式

C庫函式的檔案是獨立於具體的操作平臺。

1)標準的I/O函式並不直接操作檔案描述符,而是使用指標來    操作。

2)標準的I/O函式中,一個開啟的檔案稱為流,流可以用於讀(輸入流),寫(輸出流)或讀寫(輸入輸出流)

每個程式啟動時,都會開啟三個流:

   0)標準輸入流(stdin;           1 )標準輸出流(stdout)

  2)標準錯誤流(stderr

 

庫函式的——建立和開啟

FILE *fopen(char*filename, char * mode)

Filename: 開啟檔名(包含路徑,預設為當前路徑)

Mode: 開啟模式   指定檔案的開啟方式(是讀、寫、?)

 

庫函式——寫

Fwrite(void * buf, size, n, FILE * stream)

功能:從緩衝區buf所指陣列中把n個欄位寫到stream指向的檔案中,每個欄位長為size位元組,返回實際讀取的欄位數。

 

檔案只儲存、不搜尋、不處理

相關文章