-------------------------------------资源来源于网络,仅供自学使用,如有侵权,联系我必删.
第一:
目录以及基础知识
在 linux 中,文件目录包含文件名列表,每一个文件名对应一个 inode 编号。目录中还能包含其它子目录,在 linux 中所有的目录和文件都是以树形结构组织的。既然是树形结构,那么肯定就有一个根,在 linux 下有一个根 root 目录,如下图所示,使
用命令“cd /”就可以进入 root 目录。
root 目录指的是根目录。另外有一个 root 用户的概念,一个是目录中的概念,一个是 linux用户中的概念,不要混淆。
第二:`
实验-getcwd 函数
linux命令中可以使用pwd查看当前目录,系统编程中可以通过getcwd获取当前目录
• man 3 getcwd
如下图所示,有三个类似的函数 getcwd,getwd,get_current_dir_name
• char *getcwd(char *buf, size_t size);
– 参数*buf:保存当前目录的缓冲区
– 参数size:在现代linux 中,buf 的长度至少可以为255 字节
– 返回值:成功返回指向当前目录的指针,和buf 的值一样,错误返回NULL
• char *getwd(char *buf);该函数已经过时,使用的时候会有警告
– 参数*buf:保存当前目录的缓冲区
– 返回值:成功返回指向当前目录的指针,和buf 的值一样,错误返回NULL
• char *get_current_dir_name(void);
– 参数:无
– 返回值:成功返回指向当前目录的指针,错误返回NULL
第三:
getcwd 函数例程
编写简单的 getcwd.c 文件测试 getcwd 函数。
#include <stdio.h>
/*getcwd、getwd和get_current_dir_name 函数的头文件*/
//定义“__USE_GNU”会让 get_current_dir_name 正常使用
#define __USE_GNU
#include <unistd.h>
#define LENTH 255
int main()
{
char pwd[LENTH];
char *wd;
//getcwd函数测试
//使用 getcwd 函数获取当前目录并打印
if(!getcwd(pwd,LENTH)){
perror("getcwd");
return 1;
}
printf("\ngetcwd pwd is %s\n",pwd);
//getwd函数测试
//使用 getwd 函数获取当前目录并打印
wd = getwd(pwd);
if(!wd){
perror("getcwd");
return 1;
}
printf("\ngetwd pwd is %s\n",wd);
//get_current_dir_name函数测试
//使用 get_current_dir_name 函数获取当前目录并打印
wd = get_current_dir_name();
if(!wd){
perror("getcwd");
return 1;
}
printf("\nget_current pwd is %s\n",wd);
return 0;
}
第四:
编译运行测试
1)在 Ubuntu 系统下,如下图所示,进入前面实验创建的目录
“/home/linuxsystemcode/CatlogFile”,将源码 getcwd.c 拷贝进去,进入新建的文件夹CatlogFile,如下图所示
2)使用命令“arm-none-linux-gnueabi-gcc -o getcwd getcwd.c -static”编译 getwd 文件,如下图所示,使用命令“ls”可以看到生成了 getcwd 可执行文件。
3)拷贝到挂载点
4)开发板挂载后运行文件