二 檔案與目錄

2021-07-06 03:39:07 字數 3365 閱讀 5139

struct stat

#include 

#include

#include

int open(char *pathname, int o***, /* mode_t mode */); 返回檔案描述符

#include

int close(int fd); 關閉檔案

#include

ssize_t read(int fd, void *buf, size_t count); 從fd中讀取count個位元組放在以記憶體首位址為buf上,

成功返回讀取到的位元組數,讀到檔案末尾返回0。失敗返回-1,

#include

ssize_t write(int fd, const

void *buf, size_t count); 把記憶體以 buf為首位址,count個位元組寫進fd中,

返回寫成功的位元組數。

#include

#include

mode_t umask(mode_t mask); 更改uamsk的值。

最大檔案開啟個數

系統最大檔案開啟個數 cat /proc/sys/fs/file-max

預設最大檔案開啟個數 ulimit -a

更改預設最大檔案開啟個數 ulimit -n 4096

#include

void perror(const

char *s); 列印出錯資訊

#include

off_t lseek(int fd, off_t offset, int whence);

#include

int fcntl(int fd, int cmd, ... /* int arg */); 改變已經開啟的檔案的訪問控制屬性

#include

#include

int ioclt(int fd, int request, ...); 向裝置檔案傳送控制或配置指令,更改一些物理訪問控制屬性雜項函式。

#include

#include

#include

int stat(cost char *path, struct stat *buf); 主要功能獲取檔案的inode屬性。

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

int lstat(const

char *path, struct stat *buf); 不跟隨符號鏈結,返回符號鏈結的有關資訊,二不是符號鏈結所引用的檔案資訊

#include

int access(const

char*pathname, int mode); 按實際uid、gid,跟蹤符號鏈結。測試乙個檔案是否有訪問許可權,

成功返回0;出錯,返回-1

mode引數:

r_ok:讀許可權

w_ok:寫許可權

x_ok:執行許可權

f_ok:是否存在

#include

int chmod(const

char *path, mode_t mode); 改變許可權

#include

int unlink(const

char *pathname); 功能:(1)如果是符號鏈結,刪除符號鏈結

(2)如果是硬鏈結,硬鏈結個數減1,

(3)如果硬鏈結為0,但有程序已開啟該檔案,

並持有檔案描述符,則等程序關閉該檔案時,

kernel 才真正去刪除該檔案

(4)利用該特性建立臨時檔案,

先open() 或 creat() 建立乙個檔案,

馬上unlink()此檔案

硬鏈結不允許跨檔案系統,而posix可以跨檔案系統,

目錄不可以建立硬鏈結,因為給目錄建立硬鏈結會形成死迴圈

#include

int chdir(const

char pathname); 改變當前工作目錄

#include

char *getcwd(char *buf, size_t size); 獲取當前工作目錄,成功,返回buf;失敗,返回null

#include

#include

int mkdir(const

char *pathname, mode_t mode); 建立乙個目錄

#include

int rmdir(const

char *pathname); 刪除乙個目錄

#include

#include

dir *opendir(const

char *pathname); 開啟乙個目錄

int closedir(dir *dp); 關閉開啟的目錄

struct dirent * readdir(dir *dp); 每次返回乙個記錄項,然後指向下乙個記錄項

到達目錄末尾,返回null,此時不設定errno,

當出錯,返回null,errno被設定。

void rewinddir(dir *dp); 將記錄項指標重置為指向第一項

long telldie(dir *dp); 返回當前目錄指標在什麼位置

void seekdir(dir *dp, long loc); 設定目錄指標位置

/*

* 在linux下搜尋目錄下檔案及其子目錄檔案

* 演算法是先進入該目錄,找到第乙個記錄項,檢視是否為目錄。是,進入該目錄並重複上述,不是,返回上級目錄

*/#include

#include

#include

#include

#include

void sys_err(char *funcname);

void showdir(int i);

int main(int argc, char *argv)

if(access(argv[1], f_ok) < 0)

sys_err("access()");

if(chdir(argv[1]) < 0)

sys_err("chdir()");

showdir(0);

return0;}

void sys_err(char *funcname)

void showdir(int i)

else

printf("\n");

}chdir("..");

closedir(dirp);

}

18 檔案與目錄

模式 說明r唯讀 r 讀寫 w寫入,先刪除原檔案,在重新寫入,如果檔案沒有則建立 w 讀寫,先刪除原檔案,在重新寫入,如果檔案沒有則建立 可以寫入輸出 a寫入,在檔案末尾追加新的內容,檔案不存在,建立之 a 讀寫,在檔案末尾追加新的內容,檔案不存在,建立之 b開啟二進位制檔案。可以與r w a 結合...

5 檔案目錄結構(二)

一切皆檔案 1 所有內容都是以檔案的形式儲存和管理的,即一切皆檔案,普通檔案是檔案,目錄 windows 下稱為資料夾 是檔案,硬體裝置 鍵盤 監視器 硬碟 印表機 是檔案,就連套接字 socket 網路通訊等資源也都是檔案。2.檔案具體可分為以下幾種型別 類似 mp4 pdf html等等,lin...

4 1 3 檔案目錄

檔案目錄 資料夾 檔案控制塊 目錄表表示檔案下面的檔案 有結構檔案,記錄了實體地址 fcb的集合就是檔案目錄,包含了檔案的基本資訊 檔名和實體地址 檔案目錄 單級目錄檔案 不可以對檔案命名重名 兩級目錄結構 不同使用者可以重名,但不能對檔案分類 多級目錄結構 當前目錄 vs 絕對路徑 樹形結構不便於...