Linux 讀書總結—–檔案

來源:互聯網
上載者:User

1,inode中儲存喲普檔案內容的塊號碼,Linux核心進行讀寫操作時,會根據inode中的盤塊號碼來操作相應的盤塊,完成對檔案的讀寫。mv命令用於移動一個檔案,即使要移動的檔案很大,其移動速度也很快,原因是mv命令沒有移動檔案內容而是改變了檔案的目錄項。該命令在新的目錄下建立一個新的目錄項,並將其指向原來的檔案即可。

2,Linux環境使用Link函數建立一個永久連結,其函數原型:int link(const char *path1,const char*path2),第一個參數是現有檔案名稱,第二個參數是新的目錄項。Linux檔案系統不允許普通使用者建立一個連結到目錄的永久連結,因為這樣可能會導致檔案系統中出現迴路,根使用者可以建立到目錄的連結但應該杜絕出現迴路的情況。

3,永久連結只能引用同一檔案系統中的檔案。它引用的是檔案在檔案系統中 的物理索引( inode)。當移動或刪除原始檔案時,永久連結不會被破壞,因為它所引用的是檔案的物理資料而不是檔案在檔案結構中的位置。永久連結的檔案不需要使用者有訪問 原始檔案的許可權,也不會顯示原始檔案的位置。如果您刪除的檔案有相應的永久連結,那麼這個檔案依然會保留,直到所有對它的引用都被刪除。(每添加一個永久連結 計數器+1,查處一個永久連結,計數器-1,當計數器為0時,檔案即被刪除)

4,符號連結是一個指標,指向檔案在檔案系統中的位置。符號連結可以跨 檔案系統,甚至可以指向遠程檔案系統中的檔案。符號連結只是指明了原始檔案的位置,使用者需要對原始檔案的位置有存取權限才可以使用連結。如果原始檔案被刪 除,所有指向它的符號連結也就都被破壞了。它們會指向檔案系統中並不存在的一個位置。(刪除符號連結並不會刪除原檔案)

5,stat函數可以得到目錄檔案的轉檯資訊,其許可權位同樣儲存在st_mode成員變數中。擁有對目錄的讀許可權可以列出該目錄中的目錄項;擁有對該目錄的寫入權限可以在該目錄中建立新的檔案;擁有對該目錄的執行許可權可以穿過該目錄,從而大到該目錄的子目錄。也就是說如果使用者提供一個路徑,那麼對於該路徑的每一個目錄,該使用者都必須擁有執行許可權才可以保證該路徑是可用的。此點往往被忽略,事實上每一個目錄都應當具有執行許可權。

6,目錄是一種特殊的檔案,因此可以像操作檔案一樣操作目錄。目錄同樣可以被開啟,讀寫和定位。使用者雖然可以在目錄中刪除或建立檔案,但是不能夠對目錄進行寫操作。目錄的寫操作完全是由核心代理完成的,因此Linux環境下不提供寫目錄的函數介面。

7,子進程改變工作目錄並不會影響父進程。如果cd命令實現為一個程式時,而父進程絲毫不受影響。此時cd命令就不起作用。所以,Linux系統中並沒有將cd命令實現為一個獨立的程式,而是實現在shell程式裡。所以不能在程式裡用system("cd /usr")之類的系統調用。

8,/proc目錄下的檔案是系統中運行進程的映像。因此這些檔案只儲存在記憶體之中。proc檔案系統的設計意圖在於為使用者提供一組訪問進程核心資料的介面。proc檔案系統是一個偽檔案系統,它只存在於記憶體當中,用ls -l命令查看其檔案詳情發現多數檔案的大小為0!。proc檔案系統不是普通意義上的檔案系統,它既是一個到啟動並執行進程地址空間的提供者,同時又是一個訪問核心資料的介面。使用者和應用程式可以通過Linux系統調用(如open(),read(),write(),ioctl()等函數)訪問proc檔案系統中的檔案,以取得相應的資訊。例如常用的ps程式正是利用/proc擷取進程狀態。proc檔案系統的路徑為/proc,使用者可以使用ls命令查看該目錄下的檔案,其中一部檔案全是以數字為名的子目錄,這個數字就是相關進程的進程ID。而這些目錄裡包含著記錄運行中進程的資訊。在/proc檔案裡有“.”檔案,沒有“..”檔案,因為proc沒有父目錄。

9,fclose函數關閉檔案時,該函數會將儲存在記憶體中未來得及寫回到磁碟的檔案內容寫回到磁碟上。瞭解這一點很重要,如果沒有調用fclose函數,就必須等待記憶體中緩衝區被填滿,由系統將其內容寫回到磁碟上去。對於fclose函數是否需要檢查傳回值的問題困擾著許多程式員。雖然嚴格地說應該檢查所有的系統調用的傳回值,並且進行錯誤處理,但對於fclose函數出錯的幾率很小,幾乎為0.但如果去關閉一個網路環境中的遠程檔案,fclose函數就有可能出錯。由於fclose函數在關閉檔案時會將緩衝區的內容寫回到磁碟上,因此fclose函數實際是進行了一個寫操作。在網路環境中,檔案的內容是要通過網路傳輸到目的主機上並寫入磁碟上的。在這個傳輸過程中,如果網路連結出現問題或者傳輸資料出錯,就會導致檔案內容寫入失敗。這時fclose函數就會出錯。由此可知,如果在本地關閉一個檔案可以不用檢查傳回值;如果在網路環境中關閉一個檔案,檢查fclose函數的傳回值是有必要的。

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.