Linux 程式中的檔案和目錄操作

2021-06-21 00:29:00 字數 1728 閱讀 2620

/*

* 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 ...