/*
* linux程式設計 - 在程式中對檔案和目錄進行操作和管理
* 個人筆記*/
#include
struct dirent
struct stat ;
先前所描述的st_mode 則定義了下列數種情況:
s_ifmt 0170000 檔案型別的位遮罩
s_ifsock 0140000 scoket
s_iflnk 0120000 符號連線
s_ifreg 0100000 一般檔案
s_ifblk 0060000 區塊裝置
s_ifdir 0040000 目錄
s_ifchr 0020000 字元裝置
s_ififo 0010000 先進先出
s_isuid 04000 檔案的(set user-id on execution)位
s_isgid 02000 檔案的(set group-id on execution)位
s_isvtx 01000 檔案的sticky位
s_irusr(s_iread) 00400 檔案所有者具可讀取許可權
s_iwusr(s_iwrite)00200 檔案所有者具可寫入許可權
s_ixusr(s_iexec) 00100 檔案所有者具可執行許可權
s_irgrp 00040 使用者組具可讀取許可權
s_iwgrp 00020 使用者組具可寫入許可權
s_ixgrp 00010 使用者組具可執行許可權
s_iroth 00004 其他使用者具可讀取許可權
s_iwoth 00002 其他使用者具可寫入許可權
s_ixoth 00001 其他使用者具可執行許可權
上述的檔案型別在posix中定義了檢查這些型別的巨集定義:
s_islnk (st_mode) 判斷是否為符號連線
s_isreg (st_mode) 是否為一般檔案
s_isdir (st_mode) 是否為目錄
s_ischr (st_mode) 是否為字元裝置檔案
s_isblk (s3e) 是否為先進先出
s_issock (st_mode) 是否為socket
若一目錄具有sticky位(s_isvtx),則表示在此目錄下的檔案只能被該檔案所有者、此目錄所有者或root來刪除或改名。
使用stat函式最多的可能是ls-l命令,用其可以獲得有關乙個檔案的所有資訊。
1 函式都是獲取檔案(普通檔案,目錄,管道,socket,字元,塊()的屬性。
函式原型
#include
int stat(const char *restrict pathname, struct stat *restrict buf);
提供檔案名字,獲取檔案對應屬性。
int fstat(int filedes, struct stat *buf);
通過檔案描述符獲取檔案對應的屬性。
int lstat(const char *restrict pathname, struct stat *restrict buf);
連線檔案描述命,獲取檔案屬性。
2 檔案對應的屬性
struct stat ;
Linux的檔案和目錄
home user bin usr bin 可執行二進位制檔案的目錄,如常用的命令 ls tar mv cat 等 boot 放置 linux 系統啟動時用到的一些檔案,如 linux 的核心檔案 boot vmlinuz,系統引導管理器 boot grub etc 系統配置檔案存放的目錄,不建議在...
Linux的檔案和目錄
linux系統與windows一樣,都是由乙個個小檔案構成。linux與windows最大區別在於linux一切皆檔案。在linux的跟掛載點 下,有乙個很神奇的資料夾,叫 dev。在這個資料夾下儲存著所有硬體裝置的檔案,如果剛入門的話,不要隨意修改這個資料夾下任何檔案,隨意修改都可能會使主機崩潰。...
linux檔案和目錄
ubuntu沒有碟符這個概念,只有乙個根目錄 所有檔案都在它下面 位於 home user,稱之為使用者工作目錄或家目錄,表示方式 home user 絕對路徑 從 目錄開始描述的路徑為絕對路徑,如 cd home ls usr 相對路徑 從當前位置開始描述的路徑為相對路徑,如 cd ls abc ...