基於Linux的檔案操作

2021-08-08 16:32:27 字數 2278 閱讀 3158

在對檔案進行讀寫操作前,需要先開啟該檔案。核心為每個程序維護了乙個開啟檔案的列表,該錶被稱為檔案表。該錶由一些叫做檔案描述符的非負整數進行索引。列表中的每項均包含乙個開啟檔案的資訊,其中包括乙個指向檔案備份inode記憶體拷貝的指標和元資料(例如檔案位置和訪問模式等)。使用者空間和核心空間都把檔案描述符作為每個程序的唯一cookies。開啟乙個檔案返回乙個檔案描述符,而接下來的操作則把檔案描述符作為基本引數。

每個程序按照慣例會至少有三個開啟的檔案描述符:0,1和2,除非程序顯式地關閉它們。檔案描述符0是標準輸入,檔案描述符1是標準輸出,而檔案描述符2是標準錯誤。

檔案描述符不僅僅用於普通檔案的訪問,也用於訪問裝置檔案、管道、目錄以及快速使用者空間鎖、fifos和套接字。遵循一切皆檔案的理念,任何你能讀寫的東西都可以用檔案描述符來訪問。

開啟檔案

#include#include#includeint open(const char *path,int flag);

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

path:檔名的字串位址

flag:檔案開啟模式資訊

mode:當檔案建立時,mode引數提供新建檔案的許可權

返回值:成功時返回檔案描述符,失敗時返回-1

建立檔案

#include#include#includeint creat(const char *name,mode_t mode);

mode:當檔案建立時,mode引數提供新建檔案的許可權

關閉檔案

使用檔案後必須關閉

#includeint close(int fd);
fd:需要關閉的檔案或套接字的檔案描述符

返回值:成功時返回0,失敗時返回-1

檔案偏移量lseek

每個開啟檔案都有乙個與其相關聯的「當前檔案偏移量」。它通常是乙個非負整數,用以度量從檔案開始處計算的位元組數。通常,讀寫檔案都從當前檔案偏移量處開始,並使偏移量增加所讀寫的位元組數。

#includeoff_t  lseek(int fd,off_t offset,int whence)
fd:檔案描述符

對引數offset的解釋與引數whence的值有關。

返回值:若成功,返回新的檔案偏移量;若出錯,返回為-1

將資料寫入檔案

write函式用於向檔案輸出資料

#includessize_t write(int fd,const void *buf,size_t nbytes);
返回值:成功時返回寫入的位元組數,失敗時返回-1

#include

#include

#include

#include

void error_handling(char *message);

int main(void)

void error_handling(char *message)

讀取檔案中的資料

read函式與write函式相對應,用來讀取輸入資料

#includessize_t read(int fd,void *buf,size_t nbytes);
fd:顯示資料接收物件的檔案描述符

buf:要儲存接收資料的緩衝位址值

nbytes:要接收資料的最大位元組數

#include

#include

#include

#include

#define buf_size 100

void error_handling(char *message);

int main(void)

void error_handling(char *message)

基於linux的檔案操作

1.檔案的建立 touch filename 2.目錄的建立 建立乙個單獨的目錄 mkdir directory 建立巢狀目錄 mkdir p dir1 dir2 dir3 p 表示建立遞迴目錄,當上級目錄不存在時候自動建立 3.檔案的刪除 rm filename rm f filename f f...

Linux下基於檔案描述符的檔案操作

int open const char pathname,int flags 檔名,開啟方式 int open const char pathname,int flags,mode t mode 檔名,開啟方式 許可權 int create 不常用 int close int fd open出錯時返...

基於WINAPI的檔案操作

基於winapi的檔案操作 winapi提供了兩種檔案操作函式,一組是為了和16位程式相容,這種函式比較簡單 而另一種是專門為32位程式設計,在使用時就顯得麻煩些,下面我就把這兩組函式一一介紹 一 和16位程式相容的一組函式函式 說明對應bcb庫函式 lopen 開啟檔案 fileopen lclo...