建立目錄
二、上課沒有聽懂或者沒有理解的地方
三、當天學習的收穫
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...