说明:版权所有归作者,只供学习交流,若有其它用途请联系作者,转载请遵守IT人职业规范,请注明转载地址
五,getcwd函数
getcwd函数
头文件 | <unistd.h> |
| ||
函数形式 | char *getcwd(char *buffer, size_t size) |
| ||
返回值 | 成功 | 失败 | 是否设置errno | |
返回指向当前工作目录字符串的指针 | NULL | 是 |
说明:getcwd函数获得当前工作目录,将工作目录保存在调用者提供的字符串中,字符串的大小是由用户分配。
错误信息:
(1):EINVAL:size参数为零或者buffer是空指针。
(2):ERANGE:size参数小于当前工作目录的长度,需要分配更大的内存。
(3):EACCES:权限不够,没有读或者搜索文件名称的权限。
实战演练:
从getcwd函数的相关说明看,要使得该函数获得用户所期望的结果,必须给buffer分配足够的空间。可以定义一个长度为PATH_MAX的字符串,用于保存当前路径。PATH_MAX是POSIX标准中可选的一个常量。也就是说该变量可能在limits.h中有定义,也可能没有。
#include <iostream>
#include <limits.h>
#include <unistd.h>
#ifndef PATH_MAX
#define PATH_MAX 1024
#endif
int main(void)
{
char cur_work_dir[PATH_MAX] = {'\0'};
std:: cout << "Current Max Path Length Is << "
<< PATH_MAX << std::endl;
if (getcwd(cur_work_dir, PATH_MAX) == NULL)
{
perror("Couldn't get current working directory!");
return (1);
}
std::cout << "Current Working Directory is :" <<cur_work_dir << std::endl;
return (0);
}