1、linux中硬鏈結和軟鏈結
在linux系統中,核心為每乙個新建立的檔案分配乙個inode(索引結點),每個檔案都有乙個唯一的inode號,檔案屬性儲存在具體的資料塊
裡,在訪問檔案時,索引結點被複製到記憶體中,從而實現檔案的快速訪問。
說白了就是乙個指標,指向檔案索引結點,系統並不為它重新分配inode,可以用ln 命令來建立硬鏈結;
建立硬鏈結後,連線數均增加1,硬鏈結和被鏈結是同乙個檔案的兩個名字,它們具有同樣的索引結點和檔案屬性,為被鏈結檔案建立乙個
硬鏈結,就是為被鏈結檔案在當前目錄上建立乙個新指標;
鏈結數是同時減一,只有將所有執行檔案內容的指標,也即鏈結數減為0時,核心才會把檔案內容從磁碟上刪除。
1、不可以在不同檔案系統的檔案間建立鏈結;
2、只有超級使用者才可以為目錄建立硬鏈結。
軟鏈結沒有任何檔案系統的限制,任何使用者可以建立指向目錄的符號鏈結,它具有更大的靈活性,甚至可以跨越不同機器、不同網路對檔案
進行連線;建立軟鏈結,ln -s
硬鏈結&軟鏈結
1)硬鏈結原檔案&鏈結檔案公用乙個inode號,說明它們是同乙個檔案,軟鏈結原檔案&軟鏈結檔案擁有不同的inode號,表明它們是兩個不
同的檔案;
2)在本質上,硬鏈結檔案和原檔案具有平等關係
3)軟鏈結的鏈結數目不會增加;
4)檔案大小不一樣,硬鏈結檔案顯示的大小和原檔案是一樣的,軟鏈結的大小是原檔案檔名的長度;
5)建立軟鏈結就是建立了乙個新檔案,當訪問軟鏈結檔案時,系統就會發現它是乙個軟鏈結檔案,它讀取軟鏈結檔案找到真正要訪問的檔案。
2、獲取檔案資訊
int stat(const char*path,struct stat*buf);//根據path路徑,獲取資訊
int lstat(const char*path,struct stat*buf);//功能和stat類似,但如果path指向的是乙個符號鏈結,返回的是該符號鏈結的資訊,而不
是其所指向檔案的資訊
int fstat(int fd,struct stat*buf);//功能和stat類似,第一引數為檔案描述符
3、檔案型別(7個)
普通檔案-、目錄d、軟鏈結l、字元裝置c、塊裝置b、管道p、套接字s
4、access faccessat
int access(const char*pathname,int mode);//檢測程序對檔案的操作許可權;mode的取值:f_ok檔案是否存在;r_ok、w_ok、x_ok檔案
是否可讀、寫、執行
unix 環境高階程式設計 讀書筆記
unix環境高階程式設計 讀書筆記 第8章exit和 exit區別 exit會直接進入核心,不會關閉io流。程序基本控制函式還有 wait,fork,exec。atexit 程式正常退出時呼叫,如果因為signal退出則不能呼叫。功能 註冊函式可以完成一些清理工作,比如全域性log類,可以不設定析構...
unix環境高階程式設計 讀書筆記
檔案 unix支援在不同程序之間共享開啟的檔案。核心使用三種資料結構表示開啟的檔案 原子操作 一般而言,原子操作指的是由多步組成的操作。如果該操作原子的執行,要麼執行完所有步,要麼一步也不執行,不可能只執行所有步驟的乙個子集。2 注意 原子操作函式 pread,pwrite pread 相當於呼叫r...
Unix環境高階程式設計 讀書筆記一
unix 基礎知識 這一章主要是unix系統的概論以及一些概念的介紹,主要分為10個小節 1 登陸 2 檔案和目錄 3 輸入和輸出 4 程式和程序 5 ansi c 6 出錯處理 7 使用者標識 8 訊號 9 unix時間值 10 系統呼叫和庫函式 這個都比較簡單,就不再重複敘述了。在標頭檔案中定義...