建立目錄:
#include
#include
int mkdir(const char *pathname,mode_t mode);
第乙個引數是要建立目錄的名字,第二個引數指定了目錄訪問許可權,程序的umask值會影響到最終生成目錄的許可權。
建立成功的時候返回0,失敗返回-1.mkdir會在建立的目錄同時建立"."和".."兩個鏈結。
刪除目錄:
#include
int rmdir(const char *pathname);
引數pathname指定要刪除的目錄的路徑名,只有在目錄為空的情況下呼叫才會成功。
開啟目錄:
#include
#include
dir *opendir(const char *dirname);
opendir的引數dirname指定要開啟目錄的路徑名,如果成功,opendir返回乙個指向dir型別的指標,返回指標將指向目錄
結構的第一項。呼叫失敗時系統會返回乙個空指標。
關閉目錄:
#include
int closedir(dir *dirptr);
closedir函式關閉引數dirptr所指向的目錄流,該目錄流通常是opendir呼叫的返回值。
讀取目錄:
#include
#include
struct dirent *readdir(dir *dirptr);
readdir接受的引數是目錄流指標,通常是函式opendir的返回值。第一次呼叫readdir後目錄的第一項將被返回到struct dirent
結構中。完成後目錄指標移動到目錄的下一項。
dirent型別結構在標頭檔案中定義,該結構包含以下成員:
ino_t d_ino; //inode number
char d_name;//filename,null terminated
在連續的呼叫readdir後,目錄指標將到達目錄的尾部,再呼叫readdir將返回空指標。
如果想再從頭開始讀取目錄,可以採用rewinddir系統呼叫:
#include
#include
void rewinddir(dir *dirptr);
呼叫rewinddir之後,下乙個readdir呼叫將返回dirptr所指的目錄的第一項
loopingdir.c:類似ls命令
#include#include#includeint my_double_ls(const char *name)要開啟目錄的路徑
/*continue looping through the directory,
* printing out the directory entry name as long
* as the inode number is valid
*/while(d=readdir(dp))遍歷目錄
*/ printf("%s\n",d->d_name);
}/*now go back to the beginning of the directory*/
rewinddir(dp);//將目錄指標指向目錄的第一項
/*print out the directory again*/
while(d=readdir(dp))
if(closedir(dp)==-1)
return 0;
}int main(int argc,char **argv)
if(my_double_ls(argv[1])==-1)
return 0;}/*
執行結果如下:
jiang@jiangfeng:~/unixprog/2011-3-11$ ./loopingdir.o /home
.jiang
..lost+found
.jiang
..lost+found
*/
linux目錄操作例子:尋找特定目錄檔案
搜尋特定目錄找到以特定字尾結尾的檔案或子目錄。接受兩個命令列引數:要搜尋的目錄名,字尾字串。
#include/*for null*/
#include#include/*for string functions*/
#includeint match(const char *s1,const char *s2);
char *find_entry(char *dirname,char *suffix)
if((dp=opendir(dirname))==null)
while(d=readdir(dp))
if(match(d->d_name,suffix))
else
}}/*字串匹配時,返回1,不匹配返回0*/
int match(const char *s1,const char *s2)
else
return 0;
}int main(int argc,char **argv)
if((p=find_entry(argv[1],argv[2]))==null)
printf("%s\n",p);
return 0;
}
chdir系統呼叫:改變工作目錄
使用chdir改變工作目錄:
#include
int chdir(const char *path);
chdir呼叫使得呼叫其程序的當前工作目錄變為path所指向的目錄。改變當前工作目錄,然後使用相對路徑名訪問檔案要比使用絕對路徑名效率更高。在失敗的情況下返回-1
#include#include#include#define verybig 200
void my_pwd(void);
int main(int argc,char **argv)
printf("the olddir is :\n");
my_pwd();
chdir(argv[1]);
printf("the newdir is:\n");
my_pwd();
return 0;
}void my_pwd(void)
else
}
getcwd系統呼叫 :得到當前目錄
得到當前工作目錄名:
#include
char *getcwd(char *name,size_t size);
getcwd返回乙個指向當前工作目錄路徑名的指標,必須保證size引數要比最後返回的路徑名長度大1。工作路徑名也會儲存在name引數中。
#include#include#include#define verybig 200
void my_pwd(void);
int main(void)
void my_pwd(void)
else
}
Linux目錄操作
找到當前目錄 char getcwd char buf,size t size 將當前工作目錄的絕對路徑名複製到 buf中,size指示 buf大小,如果buf 不夠大,裝不下該路徑,則getcwd 函式返回 null int main void char buf 1024 char fd getc...
linux目錄操作
建立資料夾 mkdir 一 mkdir命令使用許可權 所有使用者都可以在終端使用 mkdir 命令在擁有許可權的資料夾建立資料夾或目錄。二 mkdir命令使用格式 格式 mkdir 選項 dirname 三 mkdir命令功能 通過 mkdir 命令可以實現在指定位置建立以 dirname 指定的檔...
Linux目錄操作
1 建立目錄 mkdir 用法 mkdir 選項 目錄.p 建立多級目錄 v 顯示建立過程 2 拷貝目錄 拷貝目錄並改名 用法 cp r 源目錄 目標位置 copy r 拷貝目錄 p 保持指定的屬性 模式,所有權,時間戳 a 定同於 drp 完整拷貝 帶屬性拷貝 v 顯示拷貝過程 重新命名 目標目錄...