天天看點

Linux目錄操作的常用系統函數說明

1. chdir修改目前程序的工作目錄 (man 2 chdir 檢視)   

int chdir(const char *path); //path路徑

int fchdir(int fd); //fd檔案描述符

傳回值:成功傳回0;失敗傳回-1 。

2. getcwd擷取目前程序的工作目錄

char *getcwd(char *buf, size_t size); //buf傳出參數,size是buf的長度,

char *getwd(char *buf);

char *get_current_dir_name(void);

傳回值:成功傳回路徑,失敗傳回NULL 。

3. mkdir建立一個目錄 

int mkdir(const char *pathname, mode_t mode); //pathname目錄名稱,mode權限

傳回值:成功傳回0;失敗傳回-1 。

附:建立的指令需要帶有可執行權限,否則無法進入該目錄,這樣建立出來的目錄就沒有任何意義。

4. rmdir删除一個空目錄

int rmdir(const char *pathname); //pathname目錄名稱

傳回值:成功傳回0;失敗傳回-1 。

5. opendir打開一個目錄 (man 3 opendir 檢視)

DIR *opendir(const char *name); //目錄名稱

DIR *fdopendir(int fd); //檔案描述符

傳回值:成功傳回目錄指針(類似于FILE結構),失敗傳回NULL 。 

6. readdir讀取目錄 (man 3 readdir 檢視)

struct dirent *readdir(DIR *dirp); //dirp是一個DIR結構體指針,一般由opendir的傳回值得到

傳回值:成功傳回struct dirent的結構體指針,失敗傳回NULL 。 

int readdir_r(DIR *dirp, struct dirent *entry, struct dirent **result); //entry傳出參數,下一個目錄記錄;result傳出參數,目前讀取結果

傳回值:成功傳回0,*result等于NULL表示讀取完;失敗傳回其他的有關錯誤碼

附:下面對struct dirent結構體的說明:

struct dirent { 
      ino_t          d_ino;       /* inode number inode号*/ 
      off_t          d_off;       /* offset to the next dirent 目錄開頭到進入點的偏移量*/ 
      unsigned short d_reclen;    /* length of this record d_name的長度,不包括NULL字元*/ 
      unsigned char  d_type;      /* type of file; not supported                                               by all file system types 檔案類型*/ 
      char           d_name[256]; /* filename 檔案名稱*/ 
    };      

7. closedir關閉目錄

int closedir(DIR *dirp); //關閉目錄,dirp由opendir的傳回值得到

傳回值:成功傳回0;失敗傳回-1 。

8. seekdir,telldir,scandir等等,更多具體的函數和使用方法請檢視man手冊。