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 絕對路徑 樹形結構不便於...