Linux程式設計基礎 檔案同步 檔案許可權 檔案屬性

2021-10-24 08:16:14 字數 2823 閱讀 3968

在寫入資料時記憶體與磁碟之間也有乙個緩衝區,這種機制降低了磁碟讀寫次數,提高了讀寫的效率。但這種機制帶來的後果就是磁碟中的資料與實寫入的資料不匹配,系統提供了乙個函式可以讓緩衝區中的資料立即寫入到磁碟。

void sync(void);

功能:把緩衝區中的資料同步到磁碟

注意:並不等到資料同步完成後才返回,而是把緩衝區的資料加入到寫入佇列。

int fsync(int fd);

功能:把指定檔案的內容從緩衝區同步到磁碟

注意:會等到完全定稿磁碟才返回

int fdatasync(int fd);

功能:把指定檔案的內容從緩衝區同步到磁碟,只同步檔案的內容不同步屬性。

int stat(const char *path, struct stat *buf);

功能:根據檔案的路徑獲取檔案的屬性

buf:儲存檔案屬性的結構體指標,是個輸出型引數。

int fstat(int fd, struct stat *buf);

功能:根據檔案描述符獲取檔案的屬性

int lstat(const char *path, struct stat *buf);

結構體:

struct stat {

dev_t st_dev; // 裝置id

ino_t st_ino; // i節點號

mode_t st_mode; // 檔案的型別和許可權

nlink_t st_nlink; // 硬鏈結數

uid_t st_uid; // 使用者id

gid_t st_gid; // 組id

dev_t st_rdev; // 特殊裝置id號

off_t st_size; // 總位元組數

blksize_t st_blksize; // io塊位元組數

blkcnt_t st_blocks; // 占用512位元組塊數

time_t st_atime; // 最後訪問時間

time_t st_mtime; // 最後內容修改時間

time_t st_ctime; // 最後狀態修改時間

st_mode

s_isreg(m) 普通檔案

s_isdir(m) 目錄檔案

s_ischr(m) 字元裝置檔案

s_isblk(m) 塊裝置檔案

s_isfifo(m) 管道檔案

s_islnk(m) 軟鏈結檔案

s_issock(m) socket檔案

s_ifmt 0170000 獲取檔案型別的掩碼

s_ifsock 0140000 socket檔案

s_iflnk 0120000 軟鏈結檔案

s_ifreg 0100000 普通檔案

s_ifblk 0060000 塊裝置檔案

s_ifdir 0040000 目錄檔案

s_ifchr 0020000 字元裝置檔案

s_ififo 0010000 管道檔案

s_isuid 0004000 設定使用者id

s_isgid 0002000 設定組id

s_isvtx 0001000 sticky bit (see below)

s_irwxu 00700 使用者許可權掩碼

s_irusr 00400

s_iwusr 00200

s_ixusr 00100

s_irwxg 00070 組許可權掩碼

s_irgrp 00040

s_iwgrp 00020

s_ixgrp 00010

s_irwxo 00007 其他使用者許可權掩碼

s_iroth 00004

s_iwoth 00002

s_ixoth 00001

int access(const char *pathname, int mode);

功能:測試當前使用者對檔案的許可權

pathname:檔案的路徑

mode:想測試的許可權

返回值:存在返回0,不存在返回-1。

f_ok 檔案是否存在

w_ok 寫許可權

r_ok 讀許可權

x_ok 執行許可權

int chmod(const char *path, mode_t mode);

功能:根據檔案的路徑修改檔案許可權

path:檔案的路徑

mode:由三個8進行組成的許可權碼

0644 普通檔案

0755 可執行檔案

int fchmod(int fd, mode_t mode);

功能:根據檔案描述符修改檔案的許可權

fd:檔案描述符

mode_t umask(mode_t mask);

功能:設定當前程序的許可權遮蔽碼

mask:想要設定的許可權遮蔽碼

返回值:舊的許可權遮蔽碼

注意:許可權遮蔽碼預設是當前終端的,該函式的設定只對當前程序有效,進行結束後就失效了。

許可權遮蔽碼:

如果我們不讓新建立的檔案具有某些許可權,可以設定許可權過濾,

記錄在許可權遮蔽碼中。許可權遮蔽碼對於chmod命令和函式是無效。

linux 檔案同步

這個過程中使用rsync來進行操作日誌的同步,為避免遺忘特記錄下配置rsync服務以及進行日誌檔案傳輸的過程。機器以及配置過程如下 192.168.1.100作為rsync伺服器,提供rsync服務 192.168.1.101 192.168.1.102 192.168.1.103 192.168....

Linux程式設計基礎 檔案I O

unix linux為作業系統把服務和裝置都抽象成了檔案,並提供了一套簡單而統一的介面,這部分介面就是檔案讀寫。也就是說unix linux系統中的任何物件都可以被當作某種特殊的檔案,以檔案的形式訪問。檔案分類 目錄檔案 裝置檔案 socket檔案 管道檔案 普通檔案 鏈結檔案檔案相關的系統呼叫 i...

Linux檔案程式設計

在linux下可以通過相應的檔案i o函式來完成對檔案的操作,這些函式通常被稱為不帶緩衝的i o,因為這些函式對檔案的讀寫都是呼叫linux核心的系統呼叫來實現的。基本的函式包括 open read write lseek 設定檔案指標 close等 呼叫格式 include include inc...