天天看點

unix環境程式設計 目錄操作

1、目錄操作有 mkdir(constchar *pathname,mode_t mode)

建立目錄,成功則傳回0,若出錯則傳回-1

int rmdir(const char *pathname)

rmdir可以删除一個空目錄,成功則傳回0,若出錯傳回-1

DIR *opendir(const *pathname)

成功則傳回指針,若出錯則傳回NULL

struct dirent *readdir(DIR *dp)

若成功則傳回指針,出處則傳回NULL

void rewinddir(DIR *dp)   成功則傳回0,若出錯則傳回-1

int closedir(DIR *dp)   成功則傳回0,若出錯則傳回-1

int chdir(const char *pathname)    切換目錄

成功則傳回0,若出錯則傳回-1

char *getcwd (char *buf,size_t size)  擷取目前工作目錄

若成功則傳回buf,若出錯則傳回NULL

2.列印某個目錄下的所有檔案名

[cpp] 

# include <dirent.h>  

int main(int argc,char *argv[])  

{  

DIR *dir=NULL;  

struct dirent *ptr=NULL;  

if((dir=opendir(argv[1]))==NULL)  

perror("opendir");  

return -1;  

}  

while((ptr=readdir(dir))!=NULL)  

printf("%s \n",ptr->d_name);  

return 0;  

# include <stdio.h>  

3.檔案通配符,程式功能類似于ls  *.txt , 列印滿足條件的檔案

程式中的popen()和pclose()函數會建立一個管道,條用fork(),産生子程序,子程序執行指令,父程序與子程序之間利用管道實作程序間通信。

# include <string.h>  

# include <unistd.h>  

int main(int argc,char **argv)  

char buf[256];  

int i=1;  

strcpy(buf,"ls ");  

for(;i<argc;i++)  

 strcat(buf,argv[i]);  

strcat(buf," ");  

 FILE *f=NULL;  

if((f=popen(buf,"r"))==NULL)  

perror("popen");  

while(fgets(buf,sizeof(buf),f))  

printf("%s",buf);  

pclose(f);  

}