Linux檔案程式設計

2021-08-02 02:47:56 字數 2258 閱讀 6885

linux中檔案程式設計可以使用兩種方法:1.linux系統呼叫 2.c語言庫函式。系統呼叫是基於linux系統的,它不能跨系統使用。c語言庫函式在各個系統都能使用。 

a.下面先介紹基於系統呼叫的檔案程式設計 

1.檔案的建立. 

int creat(const char *filename,mode_t mode)filename:要建立的檔名(包含路徑,預設為當前路徑)mode:建立模式 

常見建立模式:s_irusr 可讀s_iwusr 可寫s_ixusr 可執行s_irwxu可讀、寫、執行 

這幾個模式怎麼記憶呢?可以按照它的英文全稱記憶。如s_irusr: set id read ,這是設定使用者的操作模式,後面再加乙個usr。l 

除了可以使用上述巨集以外,還可以直接使用數字來表示檔案的訪問許可權:可執行 -> 1可寫 -> 2可讀 -> 4 

上述值的和,如可寫可讀 -> 6無任何許可權 -> 0 

各自許可權分別對應了二進位制的不同位數。由左到右(高位到低位)對應的順序為 讀–寫–執行,我們可以把它理解為修改乙個程式**的過程記憶,即先閱讀**(讀),改**(寫),執行**(執行)。 

在linux系統中,所有開啟的檔案都對應乙個檔案描述符。檔案描述符的本質是乙個非負整數。當開啟乙個檔案時,該整數由系統來分配。檔案描述符的範圍是0 ~open_max 。早期的unix版本open_max =19,即允許每個程序同時開啟20個檔案,現在很多系統則將其增加至1024。

r+,r+b,rb+  //讀寫方式開啟

w+,w+b,wh+ //讀寫方式開啟,如果檔案不存在,則建立該檔案

a+,a+b,ab+ //讀和追加方式開啟,如果檔案不存在,則建立該檔案

但linux不區分二進位制檔案和文字檔案。

2.庫函式-讀 

size_t fread(void ptr,size_t size,size_t n,file stream) 

//從stream指向的檔案中讀取n個字段,每個欄位為size位元組,並將讀取的資料放入ptr 

所指的字元陣列中,返回實際已讀取的位元組數。 

3.庫函式-寫 

size_t fwrite(void ptr,size_t size,size_t n,file stream) 

//從緩衝區ptr所指的陣列中把n個字段寫到stream指向的檔案中,每個字段長為size 

個位元組,返回實際寫入的字段數。 

4.庫函式–讀字元 

int fgetc(file *stream) 

例: #include 

main() 

ch=fgetc(fp); 

while(ch!=eof) 

fclose(fp); 

}5.庫函式–寫字元 

int fputc(int c,file *stream) 

//向指定的檔案中寫入乙個字元 

例: #include 

main() 

printf(「input a string:\n」); 

ch=getchar(); 

while(ch!=』\n』) 

printf(「\n」); 

fclose(fp); 

}6.庫函式–格式化讀 

fscanf(file *stream,char *format[,argument…]) 

//從乙個流中進行格式化輸入 

例: #include 

#include 

int main() 

7.庫函式–格式化寫 

int fprintf(file stream,chr format[,argument,…]) 

//格式化輸出到乙個流中 

8.庫函式–定位 

int fseek(file *stream,long offset,int whence) 

//和系統呼叫一樣的 

9.路徑獲取 

char *getcwd(char *buffer,size_t size) 

//提供乙個size大小的buffer,getcwd會把當前的路徑名copy到buffer中,如果 

buffer太小,函式會返回-1。 

例: #include 

main() 

另還有fputs fgets,feof等函式,參考相關書籍

建立目錄: 

#include 

int mkdir(char *dir,int mode) 

//建立乙個新目錄。 

返回值0表示成功,-1表示出錯。

Linux檔案程式設計

在linux下可以通過相應的檔案i o函式來完成對檔案的操作,這些函式通常被稱為不帶緩衝的i o,因為這些函式對檔案的讀寫都是呼叫linux核心的系統呼叫來實現的。基本的函式包括 open read write lseek 設定檔案指標 close等 呼叫格式 include include inc...

Linux檔案程式設計

所謂系統呼叫是指作業系統提供給使用者的一組 特殊 介面,使用者程式可以通過這組 特殊 介面來獲得作業系統核心提供的的服務 由於在linux中,為了更好地保護核心空間,將程式的執行空間分為核心空間和使用者空間 也就是常稱的核心態和使用者態 它們分別執行在不同的級別上,在邏輯上是相互隔離的。因此,使用者...

Linux檔案程式設計

一 linux系統呼叫及使用者程式設計介面 1 所謂系統呼叫是指作業系統提供給使用者的一組 特殊 介面,使用者程式可以通過這組 特殊 介面來獲得作業系統核心提供的的服務 2 linux一點哲學,一切皆為檔案 在linux中對目錄和裝置的操作都等同於對檔案的操作,都是使用檔案描述符來進行的。linux...