国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 學院 > 操作系統 > 正文

《APUE》第四章筆記(4)

2024-06-28 13:22:15
字體:
來源:轉載
供稿:網友
《APUE》第四章筆記(4)

這算是在博客園寫的第一篇文章啊,之前都在csdn寫(雖然才寫了幾篇,因為開通也沒多少天。。),還是稍微期待下吧。我寫博客的主要意圖是一來能夠記錄下來自己所學過的東西,二來也想能夠跟大家交流,能夠得到更多的意見,來使自己進步。我現在是個大學生,學到的東西還真沒多少,所以寫出來的東西沒營養望能理解。

-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

創建硬鏈接和解除硬鏈接的函數

link和unlink函數:

#include <unistd.h>

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

返回值:成功返回0,出錯返回-1

此函數創建一個新的目錄項newpath,它引用現有的文件existingpath。若newpath已經存在,則返回出錯。只創建newpath中的最后一個分量,路徑中的其他部分應當已經存在。

只有超級用戶才支持創建一個指向目錄的硬鏈接,因為有可能創建不當的話會引起循環,然后崩潰(第一版的作者試過,文件系統就崩潰了)。因此很多文件系統實現不允許對于目錄的硬鏈接。(我剛剛在自己的linux系統上試過,真的是不能夠對目錄來進行硬鏈接)

為了刪除對一個現有的目錄項,可以調用unlink函數。

#include <unistd.h>

int unlink(const char *pathname);

返回值:成功返回0,出錯返回-1

此函數刪除目錄項,并將由pathname所引用的文件的鏈接計數減1.如果出錯,則不對該文件做任何修改。

為了解除對文件的鏈接,必須對包含該目錄項的目錄具有寫和執行的權限。

符號鏈接

符號鏈接跟硬鏈接最大的區別就是修改了硬鏈接,其文件內容會改變。而符號鏈接只是個指向一個文件的間接指針。符號鏈接這種文件類型保存的僅僅是文件名。當使用以文件名作為參數的函數時,應當了解函數是否能處理符號鏈接。也就是該函數能否跟隨符號鏈接到達它所鏈接的文件。下面列出了本章所說明的各個函數能否處理符號鏈接。

symlink和readlink函數

symlink函數創建了一個符號鏈接。

#include <uinstd.h>

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

返回值:成功返回0,出錯返回-1

創建符號鏈接時,并不要求actualpath已經存在,而且兩個參數也并不需要在同一個文件系統匯中(硬鏈接要)。

因為open函數跟隨符號鏈接,所以需要一種方法來打開鏈接本身,并讀鏈接中的名字。readlink函數提供了這種功能。

#include <unistd.h>

ssize_t readlink(const char *pathname, char *buf, size_t bufsize);

返回值:成功返回讀到的字節數,出錯返回-1

此函數組合了open、read、和close的所有操作。如果此函數執行成功,則它返回讀入buf的字節數。在buf中返回的符號鏈接的內容不以NULL字符終止。

文件的時間

前兩個是對于文件的內容的,第三個是對于文件的狀態的,即有關i節點的。

目錄是包含目錄項(文件名和相關i節點編號)的文件,增加、刪除和修改目錄項會影響到與其所在目錄相關的三個時間。下面給出各種函數對時間的作用:

用mkdir函數創建目錄,用rmdir函數刪除目錄

#include <sys/stat.h>

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

返回值,成功返回0,出錯返回-1

其中,dot和dot dot是自動創建的,所指定的文件訪問權限mode由進程的文件模式創建屏蔽字修改。

用rmdir函數可以刪除一個空目錄。空目錄是只包含dot和dot dot這兩項的目錄。

#include <unistd.h>

int rmdir(const char *pathname);

返回值:成功返回0,出錯返回-1


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 双江| 商南县| 台山市| 重庆市| 习水县| 扶沟县| 吉木萨尔县| 白玉县| 德江县| 叶城县| 遂昌县| 哈巴河县| 文山县| 锦州市| 库车县| 洪江市| 临夏县| 木里| 青神县| 古丈县| 深州市| 芜湖市| 德保县| 东莞市| 鞍山市| 南木林县| 黑水县| 连江县| 报价| 吉木乃县| 根河市| 彭阳县| 平湖市| 榕江县| 阜新| 琼结县| 南昌县| 丘北县| 和平区| 清远市| 彭山县|