linux C 获取当前目录的实现:
C语言getcwd()函数:取得当前的工作目录 头文件:
#include 定义函数:
char * getcwd(char * buf, size_t size);
函数说明:getcwd()会将当前的工作目录绝对路径复制到参数buf 所指的内存空间,参数size 为buf 的空间大小。
注:
1、在调用此函数时,buf 所指的内存空间要足够大。若工作目录绝对路径的字符串长度超过参数size 大小,则 返回NULL,errno 的值则为ERANGE。
2、倘若参数buf 为NULL,getcwd()会依参数size 的大小自动配置内存(使用malloc()),如果参数size 也为0, 则getcwd()会依工作目录绝对路径的字符串程度来决定所配置的内存大小,进程可以在使用完次字符串后利 用free()来释放此空间。
返回值:执行成功则将结果复制到参数buf 所指的内存空间, 或是返回自动配置的字符串指针. 失败返回NULL,错误代码存于errno
. //获取当前目录
#include ”stdlib.h“
#include “stdio.h”
#include ”string.h“
#include “unistd.h”
//包含了Linux C 中的函数getcwd()
#define FILEPATH_MAX (80)
int main()
{
char *file_path_getcwd;
file_path_getcwd=(char *)malloc(FILEPATH_MAX);
getcwd(file_path_getcwd,FILEPATH_MAX);
printf("%s",file_path_getcwd);
}
C语言opendir()函数:打开目录函数
相关函数:open, readdir, closedir, rewinddir, seekdir, telldir, scandir
定义函数:DIR * opendir(const char * name);
函数说明:opendir()用来打开参数name 指定的目录, 并返回DIR*形态的目录流, 和open()类似, 接下来对目录 的读取和搜索都要使用此返回值. 返回值:成功则返回DIR* 型态的目录流, 打开失败则返回NULL. 错误代码:
1、EACCESS 权限不足。
2、EMFILE 已达到进程可同时打开的文件数上限。
3、ENFILE 已达到系统可同时打开的文件数上限。
4、ENOTDIR 参数name 非真正的目录。
5、ENOENT 参数name 指定的目录不存在, 或是参数name 为一空字符串。
6、ENOMEM 核心内存不足。
#include “stdio.h”
#include "dirent.h"
#include "string.h"
void List(char *path)
{
struct dirent *ent = NULL; DIR *pDir;
if((pDir = opendir(path)) != NULL)
{
while(NULL != (ent = readdir(pDir)))
{
if(ent->d_type == 8) // d_type:8-文件,4-目录
printf("File:\t%s\n", ent->d_name);
else if(ent->d_name[0] != '.')
{
printf("\n[Dir]:\t%s\n", ent->d_name);
List(ent->d_name); // 递归遍历子目录
printf("返回[%s]\n\n", ent->d_name);
}
}
closedir(pDir);
} else
printf("Open Dir-[%s] failed.\n", path);
}
int main() {
char path[] = "/home/zcm/program/test";
List(path);
return 0;
}
版权声明:本文为Ma_Hong_Kai原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。