1. 程式人生 > >linux 下目錄的操作

linux 下目錄的操作

一.目錄的操作:建立與刪除, 獲取當前目錄, 設定工作目錄, 獲取目錄資訊,
1.建立: int mkdir(const char * path, mode_t mode)   //在標頭檔案<sys/stat.h><sys/types.h>
  兩個引數第一個引數是你要建立的目錄名,第二個引數應和父目錄的許可權一致。
2.刪除: int rmdir(const char * pathname) //只能刪除由pathname指定的目錄//<unistd.h>
3.獲取當前目錄: char *getcwd(char * buf, size_t size)//<unistd.h>
  含義: getcwd會將當前的工作目錄的絕對路徑複製到引數buf所指定的記憶體空間,引數size為
buf所佔的空間大小, 如果引數size為0則系統會根據當前目錄實際所佔的記憶體分配儲存空間。
4.設定當前的工作目錄: int chdir(const char * path)  | int fchdir(int fd)//<unistd.h>
  含義: 將當前的工作目錄設定成由path或者檔案描述符fd指定的工作目錄,
  作用:可以用這個函式來完成一個  cd  的命令
例子:用簡單的幾行程式碼實現:
 # include <unistd.h>
 # include <stdio.h>
int main(int argc, char **argv)
{
    char buf[PATH_MAX +1];
    if(argc < 2)
    {
       exit(-1);
    }
    if( chdir(argv[1]) < 0 )
       exit(-1);
    if( getcwd(buf, 512) <0 )
       exit(-1);
    printf("%s\n", buf);
    return 0;
}
5.獲取目錄資訊:這個目錄必須具有讀許可權 opendir-->readdir-->clisedir
  1: DIR * opendir(const char * name)//<sys/types.h><dirent>
  先開啟由引數name指定的目錄,然後返回一個DIR *目錄流類似與檔案描述符,接下來的操作都要用到這個東西。
  2:struct  dirent *readdir(DIR * dir)//<.....>
  從引數dir所指向的目錄中讀取目錄項的資訊,返回一個struct dirent結構的指標
struct dirent
{
  long d_ino;
  off_t d_off;//這個挺重要 可以檢視從目錄進入點到當前目錄檔案的偏移量
  unsigned short d_reclen;//指的是檔名的長度
  char d_name[NAME_MAX+1];//當前的目錄檔案
}
*******呼叫一次該函式返回一個檔名直到該目錄下已經沒有檔案可以讀取
例子:用簡單的幾行程式碼來使用:
   char path[512];//指一個目錄名
   DIR * dir;//目錄流
   struct dirent * ptr;//目錄的資訊
   dir = opendir(path);
   while( (ptr = readdir(dir) ) != NULL)
   {
       printf("%s\n", ptr->d_name);
   }
   closedir(dir);