天天看点

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);  

}