APUE 檔案和目錄 二

2021-09-24 21:53:50 字數 3001 閱讀 8654

link,unlink,remove和rename函式

#include int link(const char *existingpath, const char * newpath) ;

返回:若成功則為0,若出錯則為-1

為了刪除乙個現存的目錄項,可以呼叫unlink函式。

#include int unlink(const char *pathname) ;

返回:若成功則為0,若出錯則為-1

因此可以使用unlink來建立臨時檔案,先open再unlink,那麼在程序結束時,臨時檔案就會自動刪除,即使程式崩潰臨時檔案也不會殘留下來。

#include int remove(const char *pathname);

返回:若成功則為0,若出錯則為-1

remove函式解除對乙個檔案或目錄的連線。對於檔案, remove的功能與unlink相同。對於目錄,remove的功能與rmdir相同。

檔案或目錄用rename更名

#include int rename(const char *oldname, const char *newname) ;

返回:若成功則為0,若出錯則為-1

符號連線symlink和readlink函式symlink函式建立乙個符號連線。

#include int symlink(const char *actualpath, const char *sympath) ;

返回:若成功則為0,若出錯則為-1

該函式建立了乙個指向actualpath的新目錄項sympath。

#include int readlink(const char *pathname, char *buf, int bufsize) ;

返回:若成功則為讀的位元組數,若出錯則為- 1

因為open不能直接開啟符號連線,所以該函式開啟連線本身,並讀取名字,此函式組合了open read close的所以操作。

檔案的時間

i節點狀態的最後更改時間是指訪問許可位,連線數,使用者id的修改。

utime函式

乙個檔案的訪問和修改時間可以用utime函式更改。

#include #include int utime(const char *pathname, const struct utimbuf * times) ;

返回:若成功則為0,若出錯則為-1

utimbuf結構體結構如下

struct utimbuf
該函式的操作取決於times是否為null

mkdir和rmdir函式

#include #include int mkdir(const char *pathname, mode_t mode);

返回:若成功則為0,若出錯則為-1

建立乙個新的目錄。

#include int rmdir(const char *pathname);

返回:若成功則為0,若出錯則為- 1

刪除乙個空目錄。

讀目錄

#include #include dir *opendir(const char *pathname) ;

返回:若成功則為指標,若出錯則為null

struct dirent *readdir(dir *dp) ;

返回:若成功則為指標,若在目錄尾或出錯則為null

void rewinddir(dir *dp) ;

int closedir(dir *dp) ;

返回:若成功則為0,若出錯則為-1

dir類似於file結構,由opendir返回的指向dir結構的指標由另外三個函式使用。opendir執行初始化操作,使第乙個readdir讀目錄中的第乙個目錄項。目錄中各目錄項的順序與實現有關。它們通常並不按字母順序排列。

chdir, fchdir 和getcwd函式

#include int chdir(const char *pathname) ;

int fchdir(int filedes) ;

兩個函式的返回:若成功則為 0,若出錯則為-1

可以分別用pathname或開啟檔案描述符來指定新的當前工作目錄。

該函式只影響該程序的當前工作目錄,不影響其他程序。

#includechar *getcwd(char *buf, size_t size);

返回:若成功則為buf, 若出錯則為null

該函式將絕對路徑存到buf中,size需足夠大來儲存絕對路徑。

特殊裝置檔案

看不懂,將來再補

sync和fsync函式

#include void sync(void);

int fsync(int filedes) ;

返回:若成功則為0,若出錯則為-1

sync只是將所有修改過的塊的快取排入寫佇列,然後就返回,它並不等待實際i/o操作結束。

fsync將指定檔案描述符,等待i/o結束再返回。

APUE筆記 檔案和目錄

4.10 粘著位 在早期的作業系統中,未使用分頁技術。程式在磁碟上是隨機儲存的,則在裝入程式是會耗費較大的時間,為保證下次執行程式時能將程式正文快裝入記憶體,作業系統在磁碟上開闢了塊交換區。交換區的檔案是連續儲存的,裝入速度相對會更快。現在作業系統使用分頁技術,因此不再使用這種技術。但一般都擴充套件...

APUE 檔案和目錄 中

乙個檔案可以有多個目錄項指向其i節點。使用link函式可以建立乙個指向現存盤案連線 include int link const char existingpath,const char newpath 返回值 成功為0,出錯為 1 該函式建立乙個新目錄項newpath,指向現存盤案existing...

APUE 檔案和目錄 中

乙個檔案可以有多個目錄項指向其i節點。使用link函式可以建立乙個指向現存盤案連線 include int link const char existingpath,const char newpath 返回值 成功為0,出錯為 1 該函式建立乙個新目錄項newpath,指向現存盤案existing...