如果我有一个可执行文件:project/bin/exec
,它将数据缓存到其活动目录中的file.txt
,file.txt
将保存的位置取决于我运行程序的方式:< / p>
project/file.txt
如果我使用project
bin/exec
运行它
project/bin/file.txt
如果我使用project/bin
./exec
运行它
我希望程序总是使用可执行文件的目录,而我想知道是否有一种强制它执行它的非编程方式。< /强>
我对UNIX / Windows感兴趣,这是否有意义?
以编程方式,我知道我可以使用boost
或std::experimental
filesystem
,或许args[0]
参数来获取可执行文件的目录,并将该路径用于I / O.
是这样做的吗?
答案 0 :(得分:3)
在 Unix (问题的一部分)上执行此操作的一种方法是使用在运行可执行文件之前使用chdir的脚本。
这样的事情:
#!/bin/ksh
loc=`dirname $0`
cd $loc
echo $PWD