在linux系统编程中,可通过getcwd获取当前目录,就像在ubuntu中用命令pwd获取当前目录一样,只不过这里是通过编程实现。
首先,通过man命令查看下getcwd相关函数,输入man 2 getcdw,进入如下界面:
看到与获取目录相关的三个函数,接下来,我们通过代码来实现:
#include <unistd.h>
#include <stdio.h>
#define __USE_GNU
#define LEN 255
int main()
{
char *wd;
char pwd[LEN];
//getcwd test
if(!getcwd(pwd, LEN))
{
perror("error");
return -1;
}
printf("\ngetcwd pwd is %s\n",pwd);
//getwd
wd = getwd(pwd);
if(!wd)
{
perror("error");
return -1;
}
printf("\ngetwd wd is %s\n",wd);
//get_current_dir_name test
wd = get_current_dir_name();
if(!wd)
{
perror("error");
return -1;
}
printf("\nget_current_dir_name wd is %s\n",wd);
return 0;
}
注意:这里由于用到了get_current_dir_name函数,就必须要定义一个 __USE_GNU,这是它的头文件里面定义的,我们可以查看下unistd.h头文件,这个头文件在Ubuntu中的路径为/usr/include/unistd.h,可通过命令 vim /usr/include/unistd.h进入其中,找到get_current_dir_name相关定义:
可以看到,要用get_current_dir_name函数,就要先定义__USE_GNU
然后编译该程序,生成可执行文件,运行该文件,查看结果:
这里有报错,是因为getwd函数的原因,但是不影响程序运行。