檔案屬性:(fstat stat lstat)
用於檢視檔案屬性,與stat
和lstat
不同,fstat
需要先開啟檔案才可以進行檔案屬性的檢視
以上三個函式的返回值:成功返回0,失敗則返回
-1,並且將
errno
設定為乙個恰當的值
雖然lstat
與stat
相似,但是
lstat
能返回符號鏈結,這是
stat
辦不到的。
在使用函式的時候應先宣告結構體和判斷:
若要列印屬性,應先了解一下struct stat
st_dev:描述檔案所在裝置的標識,通過
major
()和minor
()得出,使用
%d輸出;
st_ino:檔案的結點號,使用%d
輸出;st_mode:可輸出檔案的型別與許可權;
檔案型別可通過參看man
手冊,使用
switch
語句進行輸出:
檔案許可權通過與運算可得出八進位制:
st_nlink:硬鏈結的個數(乙個檔案可有多個名字,且刪除一部分檔案名字是不能刪除整個檔案的,這就是硬鏈結)可通過ln
命令建立硬鏈結,說到硬鏈結當然也會有軟鏈結(一種類似於
windows
中的快捷方式一樣的東西有檔名,有屬性,且內容為另乙個鏈結檔案的檔名,指向那個檔案,符號鏈結就是軟連線);
st_uid:檔案使用者標識,使用%d
輸出;st_gid:檔案使用者組標識,使用%d
輸出;st_size:檔案的大小,以位元組單位,使用%d
輸出;st_blksize:塊大小,一般為4k
;st_blocks:分配給檔案的塊的數量,512
位元組為單元;
st_atime:最後訪問時間;
st_ctime:最後修改檔案屬性的時間;
st_mtime:最後修改檔案內容的時間;
一下將通過程式一部分來說明:
輸出為:
目錄操作opendir closedir readdir
上述三個命令通過程式來解釋:
程式實現了乙個簡單的ls功能,輸出結果為:
庫庫是什麼,說白了,庫就是 *.o
檔案的集合。庫分為靜態庫和動態庫。
靜態庫:
優點:程式在執行的與函式庫沒有關係,一直非常方便;
缺點:①浪費磁碟的空間;②浪費了記憶體。
打包乙個靜態庫:
ar crs lib***x.a *.o
例如:在已有hello.o
檔案的前提下(若沒有,需使用
gcc -c
生成.o
檔案),輸入以下語句:
ar crs libmyhello.a hello
鏈結乙個庫: gcc -o main main.c libmyhello.a
執行./main
便可看到結果是合理的
動態庫:
建立動態庫:
①建立與位置無關的**: gcc -fpic -wall -c hello.c (
fpic
:position independent code
)②建立共享:gcc -shared -o libmyhello.so hello.o
③解決路徑問題:方法一:將庫拷貝到/usr/lib
目錄下(強迫症玩家不建議這麼操作),拷貝前請注意自己是
root
使用者。cp libmylib.so /usr/lib
方法二:在環境變數中加入庫的路徑:export ld_library_path=.
方法三:新增/etc/ld.so.conf.d*.conf
檔案這樣之後在進行連線就不會有問題了:gcc -o main main.c libmehello.so
也可以寫作:gcc -o main main.c -lmyhello -l
檔案系統(2)
ext3檔案系統已經成為乙個功能強大 高效能並且健壯的日誌檔案系統。ext3檔案系統是對ext2檔案系統的擴充套件,主要增加了日誌功能。所謂日誌,就是對檔案系統的每乙個變化進行記錄,從而可以從日誌記錄恢復檔案系統的一種技術。當乙個系統被意外關閉,例如由於系統電源掉電而引起的系統關閉,系統就會強制檔案...
檔案系統總結
一 檔案系統 http data.uta.edu ramesh cse3320 chap10.html 對檔案系統做了很好的介紹,主要內容包括檔案的概念 目錄結構 磁碟塊分配方法 自由空間的管理 效率和效能等。二 目前幾種檔案系統的比較 http www.ntfs.com 對ntfs和fat檔案系統...
Linux檔案系統總結
linux檔案系統結的結構是樹形結構,其入口從 開始,了解linux檔案系統的結構,對於我們需要掌握的基礎知識點之一。1 什麼是檔案系統 請參見 linux 檔案系統概述 2 檔案系統的組織結構簡說 當您使用linux的時候,如果您通過ls la 就會發現,在 下包涵很多的目錄,比如etc usr ...