在linux下 相对路径问题

比如project目录是当前目录该目录下有bin子目录bin下有a.bin文件结构project/bin/a.bin由于我在project目录下则我运行a.bin的命令为... 比如project目录是当前目录

该目录下有bin子目录
bin下有a.bin文件
结构project/bin/a.bin
由于我在project目录下 则我运行a.bin的命令为 bin/a.bin
a.bin文件的功能是以相对路径创建一个文件:
fp = fopen("resultl.txt", "w+");
那么为什么result.txt最终不是以a.bin所在的目录作为相对路径的起始点
却以我运行bin/a.bn这条命令的当前目录作为相对路径的起始点呢
如果是这样 每次一定要进入a.bin所在的目录运行才能得到正确的相对路径不是很麻烦吗
而别人写的软件是怎么做到的
比如其他软件,在任何位置运行他,他所产生的文件都是以软件的程序运行文件作为相对路径的起始,
而不是以用户当前所在的目录作为起始点。
难道都是绝对路径吗:如果是绝对路径,由于开发者不会知道使用者会将软件放到什么位置,那么必定有获得当前程序文件的代码,这个要用相对路径,而这样的话,相对路径又是在当前目录,又获取不到,这是怎么做到的
展开
 我来答
videlord
2014-02-20 · TA获得超过1336个赞
知道大有可为答主
回答量:1518
采纳率:66%
帮助的人:433万
展开全部
搞清楚当前工作路径和当前文件路径的区别
对于shell,环境变量pwd就是当前工作路径
对于你的程序,你可以获取当前文件的路径,或者安装的时候,根据用户设定输出一个配置文件,程序读取该配置文件决定路径
追问
我的意思是最好不要用绝对路径 有办法嘛?
还有安装的话 如果我移动了执行程序所在目录 只要相关目录的结构不变依然可以用 主要是这点
追答
软件一般都是有配置文件的,从配置文件中读路径

你自己的程序嘛,当然可以用相对路径,但你一定要确定相对“什么路径“

相对最后还是要转成绝对,不是你的程序就是系统
shallowgrave
2014-02-20 · TA获得超过510个赞
知道小有建树答主
回答量:340
采纳率:0%
帮助的人:404万
展开全部
Path=`dirname "$0"`
Path=`cd "$Path";pwd`

这样就可以了,一般在脚本开头会先获得当前工作路径,并切换到当前工作路径.

不懂可以问我.

已赞过 已踩过<
你对这个回答的评价是?
评论 收起
psxf91
2014-02-20 · TA获得超过428个赞
知道小有建树答主
回答量:558
采纳率:100%
帮助的人:485万
展开全部
既然lz已经发现了标准函数库打开文件的这个机制,那么我们就暂且认可这个机制。
下面说一些lz认识上的一个小问题,虽然程序可以放在任意位置,但是unix的库函数提供了程序可以取到它的所在目录的函数,可以类比pwd命令。
于是程序在调用标准函数库时候完全可以传绝对路径过去,达到存在自己路径的目的。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式