C语言中获取和改变目录的相关函数总结
C语言getcwd()函数:取得当前的工作目录
头文件:
#include<unistd.h>
定义函数:
char*getcwd(char*buf,size_tsize);
函数说明:getcwd()会将当前的工作目录绝对路径复制到参数buf所指的内存空间,参数size为buf的空间大小。
注:
1、在调用此函数时,buf所指的内存空间要足够大。若工作目录绝对路径的字符串长度超过参数size大小,则返回NULL,errno的值则为ERANGE。
2、倘若参数buf为NULL,getcwd()会依参数size的大小自动配置内存(使用malloc()),如果参数size也为0,则getcwd()会依工作目录绝对路径的字符串程度来决定所配置的内存大小,进程可以在使用完次字符串后利用free()来释放此空间。
返回值:执行成功则将结果复制到参数buf所指的内存空间,或是返回自动配置的字符串指针.失败返回NULL,错误代码存于errno.
范例
#include<unistd.h> main() { charbuf[80]; getcwd(buf,sizeof(buf)); printf("currentworkingdirectory:%s\n",buf); }
执行:
currentworkingdirectory:/tmp
C语言chdir()函数:改变当前的工作目录
头文件:
#include<unistd.h>
定义函数:
intchdir(constchar*path);
函数说明:chdir()用来将当前的工作目录改变成以参数path所指的目录.
返回值执:行成功则返回0,失败返回-1,errno为错误代码.
范例
#include<unistd.h> main() { chdir("/tmp"); printf("currentworkingdirectory:%s\n",getcwd(NULL,NULL)); }
执行:
currentworkingdirectory:/tmp
C语言chroot()函数:改变文件根目录
头文件:
#include<unistd.h>
定义函数:
intchroot(constchar*path);
函数说明:chroot()用来改变根目录为参数path所指定的目录。只有超级用户才允许改变根目录,子进程将继承新的根目录。
返回值:调用成功则返回0,失败则返-1,错误代码存于errno.
错误代码:
1、EPERM权限不足,无法改变根目录。
2、EFAULT参数path指针超出可存取内存空间。
3、ENAMETOOLONG参数path太长。
4、ENOTDIR路径中的目录存在但却非真正的目录。
5、EACCESS存取目录时被拒绝。
6、ENOMEM核心内存不足。
7、ELOOP参数path有过多符号连接问题。
8、EIOI/O存取错误。
范例
/*将根目录改为/tmp,并将工作目录切换至/tmp*/ #include<unistd.h> main() { chroot("/tmp"); chdir("/"); }