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