Linux系統程式設計 檔案IO操作

2021-09-27 04:53:32 字數 1708 閱讀 4948

檔案描述符

在 linux 的世界裡,一切裝置皆檔案。我們可以系統呼叫中 i/o 的函式(i:input,輸入;o:output,輸出),對檔案進行相應的操作( open()、close()、write() 、read() 等)。

開啟現存盤案或新建檔案時,系統(核心)會返回乙個檔案描述符,檔案描述符用來指定已開啟的檔案。這個檔案描述符相當於這個已開啟檔案的標號,檔案描述符是非負整數,是檔案的標識,操作這個檔案描述符相當於操作這個描述符所指定的檔案。

程式執行起來後(每個程序)都有一張檔案描述符的表,標準輸入、標準輸出、標準錯誤輸出裝置檔案被開啟,對應的檔案描述符 0、1、2 記錄在表中。程式執行起來後這三個檔案描述符是預設開啟的。

#define stdin_fileno  0 //標準輸入的檔案描述符

#define stdout_fileno 1 //標準輸出的檔案描述符

#define stderr_fileno 2 //標準錯誤的檔案描述符

在程式執行起來後開啟其他檔案時,系統會返回檔案描述符表中最小可用的檔案描述符,並將此檔案描述符記錄在表中。linux 中乙個程序最多只能開啟 nr_open_default (即1024)個檔案,故當檔案不再使用時應及時呼叫 close() 函式關閉檔案。

常用 i/0 函式

需要的標頭檔案:

#include

#include

#include

#include

int open(const char *pathname, int flags, mode_t mode);

功能:開啟檔案,如果檔案不存在則建立。

引數:pathname: 檔案的路徑及檔名。

flags: 開啟檔案的行為標誌,如,以唯讀方式(o_rdonly,第乙個為字母不是資料)開啟,以讀寫或新建新檔案的方式(o_rdwr|o_creat)開啟。

mode: 這個引數,只有在檔案不存在時有效,指新建檔案時指定檔案的許可權(檔案許可權詳情,請點此鏈結)。

返回值:

成功:成功返回開啟的檔案描述符

失敗:-1

int close(int fd);

功能:關閉已開啟的檔案

引數:fd: 檔案描述符,open()的返回值

返回值:

成功:0

失敗:-1

ssize_t write(int fd, const void *addr, size_t count);

功能:把指定數目的資料寫到檔案(fd)

引數:fd: 檔案描述符

addr: 資料首位址

count: 寫入資料的長度(位元組),一般情況下,資料有多少,就往檔案裡寫多少,不能多也不能少

返回值:

成功:實際寫入資料的位元組個數

失敗:-1

ssize_t read(int fd, void *addr, size_t count);

功能:把指定數目的資料讀到記憶體(緩衝區)

引數:fd: 檔案描述符

addr: 記憶體首位址

count: 讀取的位元組個數

返回值:

成功:實際讀取到的位元組個數

失敗:-1

Linux 系統程式設計學習 檔案I O操作

一 非緩衝檔案操作 執行非緩衝檔案操作後,應用程式將立即獲取或傳送資料,非緩衝檔案操作的函式只有 read write 從檔案中將資訊講到到指定的記憶體區域中read 檔案識別符號,記憶體塊指標,記憶體塊長度 返回值是實際讀取的長度,沒有讀取到資料返回0,錯誤返回1 檔案識別符號可使用open 函式...

Linux系統程式設計 檔案IO 一

最近在在實驗樓上學linux,做點筆記。上面的課程對於學習linux還不錯,有興趣可以看看。檔案io linux提供給了使用者程式一些介面,用來呼叫執行相關的功能。大多數linux檔案i o只需要用到5個函式 open,read,write,lseek和close 檔案描述符 檔案描述符是乙個非負整...

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

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