1.檔案訪問測試
測試呼叫程序對指定檔案是否擁有足夠的訪問許可權
#include int access(constchar* pathname,int
mode);
成功返回0,失敗返回 -1
-pathname:檔案路徑
-mode:訪問許可權,可取以下值
r_ok -可讀否
w_ok -可寫否
x_ok -可執行否
f_ok - 存在否
2.許可權掩碼:
設定呼叫程序的許可權掩碼:
#include mode_t umask(mode_t cmask);函式永遠成功,返回原來的許可權掩碼
-cmask :新許可權掩碼
預設掩碼(
0022);
3.修改檔案許可權
修改指定檔案的許可權:
#include int chmod(constchar*path,mode_t mode);
int fchmod(int
fd,mode_t mode);
成功返回0,失敗返回-1
-path :檔案路徑
-mode:檔案許可權
-fd:檔案描述符
4.修改檔案大小
指定檔案的大小:
#include int truncate(constchar*path,off_t length);
int ftruncate(int
fd,off_t length);
成功返回0,失敗返回-1
-path:檔案路徑
-length:檔案大小
-fd:檔案描述符
5.記憶體對映檔案
建立虛擬記憶體到物理記憶體或檔案的對映
#include void* mmap(void* start,size_t length,intprot,
int flags,int
fd,off_t offset);
成功返回對映區記憶體起始位址,失敗返回map_failed(-1
)-start:對映區記憶體起始位址,null系統自動選定後返回
-length:對映區位元組長度,自動按頁(4k)園整
-prot:對映區訪問許可權,可以取以下值
prot_read -對映區可讀
prot_write -對映區可寫
prot_exec -對映區可執行
prot_none -對映區不可訪問
-flags:對映標誌,可取下值
map_anonymous -匿名對映,將虛擬記憶體對映到物理記憶體而非檔案,忽略fd和offset引數
map_private -對對映區的寫操作只反映到緩衝區中,並不會真正寫入檔案
map_shared -對對映區的寫操作直接反映到檔案中
map_denywrite -拒絕其他對檔案的寫操作
map_fixed -若在start上無法建立對映,則失敗(無此標誌系統會自動調整)
map_locked -鎖定對映區,保證其不被換出
-offset:檔案偏移量
6.解除虛擬記憶體到物理記憶體或檔案的對映
#include int munmap(void*start,size_t length);成功返回0,失敗-1
-start: 對映區記憶體起始位址,必須是頁的首位址
-length:對映區位元組長度,自動按頁(4k)園整
7.檔案硬鏈結
建立乙個已有硬鏈結建立乙個新的硬鏈結
#include int link(constchar* oldpath,const
char*newpath);
-oldpath:原始路徑
-newpath:新建路徑
刪除目錄檔案裡的乙個硬鏈結條目
#include int unlink(constchar*pathname);
int remove(const char* pathname);
成功返回0,失敗-1
修改檔案的名字:
#include int rename(constchar* oldpath,const
char*newpath);
成功返回0,失敗-1
8.符號鏈結
#include int symlink(constchar* oldpath,const
char*newpath);
成功 0,失敗-1
ssize_t readlink(
const
char* path,char*buf,size_t size);
成功返回拷入buf的符號鏈結檔案的內容的位元組數,失敗返回-1
9.目錄的建立
建立空目錄
#include int mkdir(constchar*pathname,mode_t mode);
成功返回0,失敗-1
--pathname:目錄路徑
--mode:訪問許可權,目錄的執行許可權(x)表示可進入
刪除乙個空目錄
#include int rmdir(constchar*pathname);
成功0,失敗-1
-pathname:目錄路徑
10.當前工作目錄
獲取當前工作目錄
#include char* getcwd(char*buf,size_t size);成功返回當前工作目錄路徑字串指標,失敗返回null
-buf:緩衝區
-size:緩衝區大小(位元組)
切換當前工作目錄
#include int chdir(constchar*pathname);
int fchdir(int
fd);
-path:工作目錄路徑
-fd:目錄工作目錄檔案描述符(由open函式返回)
11.獲取目錄內容
開啟目錄
#include dir* opendir(constchar*name);
dir* fdopedir(int
fd);
成功返回目錄流指標,失敗返回null
-name:目錄路徑
-fd:目錄檔案描述符(由open函式返回)
關閉目錄
#include int closedir(dir*dirp);成功返回0,失敗-1
-dirp:目錄流指標
讀取目錄
#include struct dirent* readdir(dir*dirp);成功返回目錄條目指標,讀完(不置errno)或失敗返回null
目錄條目結構:
struct
dirent;
--每個目錄中還有兩個特殊的條目,其d_name成員的值為「.」,「..」,分別表示該目錄本身和其父目錄,更目錄無父目錄
其中表示檔案型別的d_type成員,可取以下值
dt_reg -普通檔案
dt_dir -目錄
dt_sock -本地套節字
dt_chr -字元裝置
dt_blk -塊裝置
dt_lnk 符號鏈結
dt_fifo 有名管道
dt_unknown 未知
c 檔案分割與合併 part 2
同樣,引用system.io,然後,給瀏覽按鈕新增如下 瀏覽 private void button1 click object sender,eventargs e string path openfiledialog1.filename.split tochararray string stem...
c 檔案分割與合併 part 2
同樣,引用system.io,然後,給瀏覽按鈕新增如下 瀏覽 private void button1 click object sender,eventargs e string path openfiledialog1.filename.split tochararray string stem...
檔案許可權之預設許可權與隱藏許可權2
檔案的預設許可權 umask umask 0022 後面三個是一般許可權 umask s u rwx,g rx,o rx 目錄的預設許可權 1.檔案預設不給執行 x 許可權,最大666 rw rw rw 2.目錄預設給x許可權,最大777 rwxrwxrwx 3.uamsk分數值指的是,該預設值需要...