Linux系統程式設計之檔案程式設計

2021-10-14 23:20:30 字數 2786 閱讀 4604

目錄

一、檔案程式設計

1、linux檔案

2、檔案描述符(file descriptor)

3、常用api(open、write/read、lseek、close)

(1)open():開啟檔案函式

(2)  close():關閉檔案

(3)write():寫檔案

(4)read():讀檔案

(5)lseek():游標定位

linux一點哲學,「一切皆為檔案」,在linux中對目錄和裝置的操作都等同於對檔案的操作。linux檔案可以分為:普通檔案,管道檔案,目錄檔案,鏈結檔案,裝置檔案,socket。

在程式設計中簡稱fd,檔案描述符在形式上是乙個非負整數。實際上,它是乙個索引值,指向核心為每乙個程序所維護的該程序開啟檔案的記錄表。當程式開啟乙個現有檔案或者建立乙個新檔案時,核心向程序返回乙個檔案描述符。

標準輸入:stdin_fileno                 0

標準輸出:stdout_fileno             1

標準出錯處理:stderr_fileno      2

這三個符號常量的定義位於標頭檔案 unistd.h,乙個程序啟動都會開啟這三個檔案。

各引數及返回值的含義如下:  

1、flags:

*注意:上述三個常量必須指定且只能指定乙個。

*注意:上述值僅為可選取值

例如:

符號 & 和 | 這兩個運算子都是二進位制的按位操作符。

&: 二進位制「與」(都為1時,結果是1,否則是0。),比如:1010 & 1011 = 1010,1010 & 1000 = 1000。

|: 二進位制「或」(有1時,結果是1,都是0時,結果為0。),比如:1010 | 1011 = 1011,1010 | 1000 = 1010。

2、mode(許可權選擇)

常建立模式:

s_irusr---------------可讀

s_iwusr---------------可寫

s_ixusr---------------可執行

s_irwxu---------------可讀、寫、執行

除用以上巨集定義還可以用數字來表示

所在標頭檔案

#include
函式原型

int close(int fd);//fd即要關閉的檔案描述符
各引數及返回值的含義如下:

*注意:每次開啟檔案操作後要記得關閉以免造成檔案損壞或未知錯誤,當乙個程序終止時,核心會自動關閉它所有開啟的檔案。

所在標頭檔案

#include
函式原型

ssize_t write(int fd, const void *buf, size_t count);
各引數及返回值的含義如下:

*注意1:size_t是無符號整型,ssize_t是有符號整型

*注意2:buf指向的記憶體空間必須事先分配好

對於const void *buf的解釋就是定義乙個void*的變數lpbuf,而且這個變數,

也就是lpbuf在程式中是不允許被改變量值的,

如果有這麼一句:

void fun();

lpbuf=fun;

那麼將是錯誤的,

因為lpbuf的定義中已經宣告了,它的屬性是const,即不能被改變。例項中可以自己定義型別,可將char *buf="hello"放入

所在標頭檔案

#include
函式原型

ssize_t read(int fd, void *buf, size_t count);
各引數及返回值的含義如下:  

所在標頭檔案

#include #include
函式原型

off_t lseek(int fd, off_t offset, int whence);
各引數及返回值的含義如下:  

(1)whence:

vimdiff  a.cb.c可以同屏比較兩個檔案內容

系統程式設計之檔案系統程式設計

系統呼叫 所有的作業系統都提供多種服務的入口點,程式由此向核心請求服務。這些可直接進入核心的入口點被稱為系統呼叫。不同作業系統提供了自己的一套系統呼叫,所以系統呼叫無法實現跨平台使用。而且頻繁地系統呼叫,在使用者態和核心態之間切換,很耗費資源,效率不高。c標準庫提供了操作檔案的標準i o函式庫,與系...

linux系統程式設計之檔案I O

一 檔案描述符 linux系統中,所有開啟的檔案都對應乙個數字,這個數字由系統來分配,稱為檔案描述符。pcb程序控制塊裡有檔案描述符表,以陣列形式存放於核心區。乙個程序預設開啟3個檔案描述符 stdin fileno 0 stdout fileno 1 stderr fileno 2 新開啟檔案返回...

linux系統程式設計之檔案IO

1.開啟檔案的函式open,第乙個引數表示檔案路徑名,第二個為開啟標記,第三個為檔案許可權 效果測試 列印開啟檔案返回的描述符為3,同時建立了檔案testopen1 2.建立檔案函式creat和關閉函式close 使用 include include include includeint main ...