您的位置:首页 > 运维架构 > Linux

linux目录操作

2014-03-05 17:36 246 查看
获取当前路径

#include <unistd.h>

char *getcwd(char *buf, size_t size);

char *getwd(char *buf);
char *get_current_dir_name(void);

这些函数都返回程序到当前工作路径
get_current_dir_name() 将通过malloc申请一段足够大的空间来存放当前路径。

getwd() 则不申请任何空间,参数buf被指定为MAX_PATH长度。

MAX_PATH是C语言运行时中通过#define指令定义的一个宏常量,它定义了编译器所支持的最长全路径名的长度。

如果当前工作路径长度大于MAX_PATH则返回NULL,否则返回当前路径字符串。

切换路径

#include <unistd.h>

int chdir(const char *path);

创建文件

#include <sys/stat.h>

#include <sys/types.h>

int mkdir(const char *pathname, mode_t mode);
返回0表示成功,返回-1表述出错。使用该函数需要包含头文件sys/stat.h

mode 表示新目录的权限


目录扫描

int scandir(const char* dirname,//目录名

                struct dirent*** namelist,//返回目录列表

                int (*)(struct dirent*),//回调函数,过滤目录

                                                    //NULL:不过滤

                int (*)(struct dirent*,struct dirent*)//排序返回目录

                                                                        //NULL:不排序

                );

#include <stdio.h>
#include <unistd.h>
#include <stdlib.h>
#include <dirent.h>

main()
{
int i;
int r;
int newfd;
char path[200];
struct dirent **list;

//获取当前路径
getcwd(path, 200);
printf("%s\n", path);
getwd(path);
printf("%s\n", path);
printf("%s\n", get_current_dir_name());
//切换路径
chdir("/home");
printf("%s\n", get_current_dir_name());
//创建文件
mkdir("dir", 0);
//扫描目录
printf("=========\n");
r=scandir(path, &list, 0, 0); //返回目录个数
for(i=0; i<r; i++)
printf("%s\n", list[i]->d_name);

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: