Linux系統程式設計8 檔案I O

2022-05-23 14:18:11 字數 1494 閱讀 8258

fcntl.h 標頭檔案,file control的縮寫。

open函式,openat函式:

int open(const

char *path, int

oflag);

int openat(int fd, const

char *path, int oflag);

將準備開啟的檔案或是裝置的名字作為引數path傳給函式,oflags用來指定檔案訪問模式。

兩個系統呼叫成功返回乙個新的檔案描述符,失敗返回-1。兩個函式返回的檔案描述符一定是最小的未用描述符數值。

creat函式:

int creat(const

char *path, mode_t mode);

若成功,返回為只寫開啟的檔案描述符;若出錯,返回-1

close函式:

int close(int fd);

若成功返回0,若出錯返回-1;

lseek函式:

off_t lseek(int fd, off_t offset, int whence);

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

每個開啟的檔案都有乙個與其相關聯的「當前檔案偏移量」,通常是乙個非負整數。

用以度量從檔案開始處計算的位元組數。通常讀寫操作都從當前檔案的偏移量處開始,並使偏移量增加所讀寫的位元組數。

對引數offset的解釋與引數whence有關:

若whence是seek_set,則將該檔案的偏移量設定為距檔案開始處offset個位元組;

若whence是seek_cur,則將該檔案的偏移量設定為其當前值加offset,offset可為正或負;

若whence是seek_end,則將該檔案的偏移量設定為檔案長度加offset,offset可正可負;

可用以下方式獲取開啟檔案的偏移量:

off_t  curpos;

curpos = lseek(fd, 0, seek_cur);

read函式:

ssize_t  read(int fd,  void *buf,  size_t nbytes);

呼叫read函式從開啟檔案中讀資料;

返回值:讀到的位元組數,若已到檔案尾,返回 0,若出錯,返回-1;

write函式:

ssize_t  write(int fd, const

void *buf, size_t nbytes);

返回值:若成功,返回已寫的位元組數;若出錯,返回-1;

其返回值通常與引數nbytes的值相同,否則表示出錯。write出錯的乙個常見原因是:磁碟已寫滿,或者超過了乙個給定的程序的檔案長度限制。

linux系統下檔案i/o程式設計:

Linux系統程式設計(七)檔案許可權系統呼叫

包含標頭檔案 include 函式原型 int access const char pathname,int mode 引數 返回值 access 示例 include include intmain printf 檔案存在 return0 包含標頭檔案 include 函式原型 int chmod...

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 新開啟檔案返回...