设置(更改)与获取工作目录

chdir函数
int chdir(char *path);
功 能:更改当前工作目录。
参 数:Path 目标目录,可以是绝对目录或相对目录。
返回值:成功返回0 ,失败返回-1
VC下是_chdir 前面加一个下划线
TC和gcc下就是chdir

函数名: getcwd
功 能: 取得当前的工作目录
用 法: char *getcwd(char *buf, size_t size);

函数说明: getcwd()会将当前的工作目录绝对路径复制到参数buf所指的内存空间,参数size为buf的空间大小。在调用此函数时,buf所指的内存空间要足够大,若工作目录绝对路径的字符串长度超过参数size大小,则回值NULL,errno的值则为ERANGE。倘若参数buf为NULL,getcwd()会依参数size的大小自动配置内存(使用malloc()),如果参数size也为0,则getcwd()会依工作目录绝对路径的字符串程度来决定所配置的内存大小,进程可以在使用完此字符串后利用free()来释放此空间。
返回值: 执行成功则将结果复制到参数buf所指的内存空间,或是返回自动配置的字符串指针。失败返回NULL,错误代码存于errno。

注意: 工作目录不一定是应用程序所在路径,使用时要注意。

问题出现背景: 多个业务模块,模块一使用getcwd获取程序所在路径,然后拼接resultFiles作为业务成果本地输出路径;运行模块二的业务后,再通过getcwd函数然后拼接resultFiles获取业务一的已生成的成果文件,结果没有获取到。
问题原因分析: 在运行业务模块二时已经使用chdir改变了当前的工作路径,所以模块一通过getcwd获取的是模块二设置的路径,与模块一生成成果文件的路径不一致导致文件查找失败。
问题解决方法: 通过获取程序所在路径然后拼接其他路径解决工作目录被修改引起的相关问题。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值