linuxC文件以及目錄操作函數


opendir    --打開目錄,返回DIR*指針,man 3 opendir 查看介紹,下面查看方法類似
readdir   --讀取目錄,返回struct dirent*結構體指針(dir entry)
closedir  --關閉目錄DIR*
getcwd  --獲取當前工作目錄

下面是文件有關的函數:
stat  --獲取文件屬性,返回struct stat結構體,包括文件類型,大小修改時間,權限,用戶id等等。能夠透過符號鏈接
lstat  --類似stat,但是不能透過符號鏈接,也就是說如果是符號鏈接,就只是讀到符號鏈接屬性,不能讀取到真實文件屬性
access  --判斷文件是否有某個權限(R_OK, W_OK, X_OK),也可以使用判斷文件是否存在(F_OK)
chmod  --改變文件權限,第二個參數mode必須是一個8進制數,比如0755
chown  --改變文件所有者
rename  --重命名文件
truncate  --截取文件為指定長度,指定長度為0時,清空文件內容。
link  --創建一個硬鏈接,
symlink  --創建一個符號鏈接
readlink  --讀取一個符號鏈接名稱,是文件名稱,不是文件內容,不能讀取硬鏈接
unlink  --刪除鏈接,如果是符號鏈接,直接刪除符號鏈接。如果是硬鏈接,硬鏈接數減1,硬鏈接數為0時刪除鏈接,所有也是刪除文件的一種方法。注意:進程退出后才會真正的刪除。
unlink由於需要等到進程退出后才會真正執行刪除,所有一般用於刪除程序運行時產生的臨時文件,程序退出后,臨時文件自動刪除這個場景。

int fd = open("filename", O_CREAT | O_RDWR, 0755);  --打開一個文件,不存在時自動創建該文件,返回一個文件描述符
char* p= "this is test file\n";
write(fd, p, strlen(p));  -- strlen計算字符串長度,write寫入文件
close(fd);  --關閉文件

fcntl函數:man 3 fcntl查看文檔
int fcntl(int fd, int cmd);
int fcntl(int fd, int cmd, long arg);
int fcntl(int fd, int cmd, struct flock *lock);
cmd有以下幾種情況:
  復制文件描述符  -- F_DUPFD
  文件描述符標記  -- F_GETFD、F_SETFD
  文件狀態     -- F_GETFL、F_SETFL
  異步IO所有權   -- F_GETOWN、F_SETOWN (man 3 open 可在open函數里查看所有權限)
  文件記錄鎖    -- F_GETLK、F_SETLK、F_SETLKW

  int flags = fcntl(fd, F_GETFD);
  flags |= FD_CLOEXEC;  //設置執行exec系列函數時自動關閉fd文件描述符
  fcntl(fd, F_SETFD, flags)









 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM