210106階段三 檔案I O

2021-10-14 03:39:19 字數 1752 閱讀 2297

建立目錄

二、上課沒有聽懂或者沒有理解的地方

三、當天學習的收穫

c語言提供的標準庫實現檔案讀寫 fopen fclose fwrite

linux 的系統呼叫 open close write

標準庫函式是所有能夠支援c語言的作業系統 提供的統一的讀寫檔案的api函式,可以實現**的移植

linux系統呼叫:linux系統自己的核心提供了對檔案讀寫的特殊函式。不具備通用性。

標準庫效能更好,整個函式裡面做了緩衝區

linux系統呼叫api:直接通過作業系統的軟中斷,呼叫linux系統核心api來產生事件讀寫。

linux系統下:所有的裝置,都把它看做是乙個檔案。所有的裝置想要使用,都是呼叫open開啟,對裝置的讀寫都是read write

linux下面所有的裝置都有編號:裝置號 linux的dev下面存放所有的裝置檔案

linux系統api 幫助文件 man 系統呼叫(如open read write) 或者 man 2 系統呼叫

/int open(const char *path, int flags);

int open(const char *path, int flags,mode_t mode);

引數path :檔案的名稱 可以包含(絕對和相對)路徑 flags:檔案開啟模式

path :檔案的名稱,可以包含(絕對和相對)路徑 flags:檔案開啟模式 mode: 用來規定對該檔案的所有者

返回值開啟成功,返回檔案描述符;開啟失敗,返回-1

開啟成功,返回檔案描述符;開啟失敗,返回-1

int fd;

fd =

open

("/opt/test.txt"

,o_rdonly);if

(fd <0)

/

int write(int fd,void *buf,size_t nbytes);

引數fd :要寫入的檔案的檔案描述符 buf: 指向記憶體塊的指標,從這個記憶體塊中讀取資料寫入到檔案中 nbytes: 要寫入檔案的位元組個數

返回值寫入成功,返回寫入到檔案中的位元組個數;錯誤,返回-1

/int read(int fd, void *buf, size_t nbytes);

引數fd :想要讀的檔案的檔案描述符 buf: 指向記憶體塊的指標,從檔案中讀取來的位元組放到這個記憶體塊中 nbytes: 從該檔案複製到buf中的位元組個數

返回值如果出現錯誤,返回-1 返回從該檔案複製到規定的緩衝區中的位元組數 檔案結束,返回0

通過指定相對於開始位置、當前位置或末尾位置的位元組數來重定位 curp,這取決於 lseek() 函式中指定的位置

原型off_t lseek (int fd, off_t offset, int base);

引數fd :需設定的檔案識別符號 offset :偏移量 base: 搜尋的起始位置

返回值返回新的檔案偏移值

base

檔案位置

seek_set

從檔案開始處計算偏移

seek_cur

從當前檔案的偏移值計算偏移

seek_end

從檔案的結束處計算偏移

用來建立乙個稱為pathname的新目錄,它的許可權位設定為mode

原型int mkdir(char *pathname,mode_t mode);

引數pathname:檔案的路徑名 mode:許可權位

返回值呼叫成功返回0,失敗返回-1

無跨平台程式設計

13 檔案I O緩衝

key word 使用者空間緩衝區 核心緩衝區快取記憶體 write 將資料從使用者空間記憶體傳遞到核心空間的緩衝區中,在後續某個時刻,核心會將其從緩衝區中的資料寫入磁碟中。read 核心從磁碟中讀取資料並儲存到核心緩衝區中,read 將從該緩衝區中讀取資料。include int setvbuf ...

二 檔案I O 1 檔案描述符號

對於核心而言,所有開啟的檔案都通過檔案描述符號引用。檔案描述符是乙個非負整數。當開啟乙個現有檔案或建立乙個新檔案時候,核心向程序返回乙個檔案描述符。當讀或寫乙個檔案時候,使用open或creat返回的檔案描述符標識該檔案,將作為引數傳給read或write。在依從posix portable ope...

《APUE》筆記(1) 檔案I O

1 概述 1 unix類作業系統最重要的兩個東東 程序和檔案 2 大多數檔案i o用到的5個函式 open,close,read,write,lseek.還有檔案屬性操作函式 dup,fcntl 3 unix類作業系統的檔案i o是不帶快取的i o unbuffered i o 2 檔案描述符 fi...