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...