UNIX環境高階程式設計複習 檔案和目錄(1)

2021-06-23 02:17:30 字數 1289 閱讀 2398

#includeint stat(const char *restrict pathname,struct stat *restruct buf);

int fstat(int filedes,struct stat *buf);

int lstat(const char *pathname,struct sat *restrict buf);

三個函式的返回值:若成功則返回0,出錯則返回-1。

一旦給出pathname,stat函式就返回與此命名檔案有關的資訊結構。fstat函式獲取已在描述符filedes上開啟的檔案的相關的資訊。lstat和stat類似,但當命名的檔案時乙個符號鏈結時,lstat返回該符號鏈結的有關的資訊,而不是該符號鏈結引用檔案資訊。

第二個引數buf是指標,它指向乙個我們必須提供的結構。其基本形式是:

struct stat;
(1)普通檔案。這是最常用的檔案這種檔案包含了某種形式的資料。至於這種資料時文字還是二進位制檔案對於unix核心而言並無區別。

(2)目錄檔案。這種檔案包含了其他檔案的名字以及指向這些檔案的指標。只有核心可以直接寫檔案。

(3)塊特殊檔案。這種檔案型別提供對裝置(例如磁碟)帶緩衝的訪問,每次訪問以固定長度為單位進行。

(4)fifo。這種型別檔案用於程序間通訊,也稱為命名管道。

(5)字元特殊檔案。這種檔案提供不帶緩衝的訪問,每次訪問的長度可變。系統中的所有裝置要麼是字元特殊裝置要麼是塊特殊裝置。

(6)套接字。這種檔案型別用於程序間的網路通訊。

(7)符號鏈結。這種檔案指向另乙個檔案。

檔案的型別資訊包含在stat結構的st_mode成員中。

巨集                       檔案型別

s_isreg()          普通檔案

s_isdir()            目錄檔案

s_ischr()           字元特殊檔案

s_isblk()            塊特殊檔案

s_isfifo()           管道或fifo檔案

s_islink()           符號鏈結

s_issock()         套接字

早期的unix系統版本並不提供s_is***巨集,而是將st_mode與遮蔽字s_ifmt進行邏輯「與」運算,然後與名為s_if***的常量比較。就像如下的情況:

#define s_is***(mode) (((mode)&s_ifmt)==s_if***)

unix環境高階程式設計 err檔案

include apue.h include for definition of errno include iso c varialbe aruments static void err doit int,int,const char va list nonfatal error related ...

unix環境高階程式設計 檔案i o

一 檔案描述符 對於核心,通過檔案描述符來管理檔案。什麼是檔案描述符?在unix中,用open或者create建立幾個檔案時候,核心向程序返回乙個整數,用來記錄此檔案。以後對檔案進行操作的時候,就用此檔案描述符做引用。二 open函式 open函式用於建立乙個檔案,函式返回檔案描述符。cpp vie...

《unix高階環境程式設計》檔案和目錄 檔案時間

cpp view plain copy 檔案時間 st atime 最後訪問時間,即最後訪問檔案的時間 st mtime 最後修改時間,即修改檔案內容的時間 st ctime 最後更改時間,即更改inode節點的時間 utime函式 函式功能 更改檔案訪問時間和檔案修改時間 返回值 若成功則返回0,...