强制程序使用可执行文件的目录进行 I/O,而不是以非编程方式使用活动目录

Force program to use executable's directory for I/O instead of active directory non-programmatically

本文关键字:活动 方式使 编程 程序 可执行文件      更新时间:2023-10-16

如果我有一个可执行文件:project/bin/exec,它将数据缓存到其活动目录中的file.txt中,则保存file.txt的位置取决于我如何运行程序:

  • project/file.txt如果我用bin/execproject运行它
  • project/bin/file.txt如果我用./execproject/bin运行它

我希望程序总是使用可执行文件的目录,我想知道是否有非程序化的方法迫使它这样做。

我对UNIX/Windows感兴趣,这有意义吗

从程序上讲,我知道我可以通过使用booststd::experimental filesystem,也许是args[0]参数来获取可执行文件的目录,并使用该路径进行I/O。

这样做吗

Unix上执行此操作的一种方法(问题的一部分)是在运行可执行文件之前使用chdir脚本。

类似这样的东西:

#!/bin/ksh
loc=`dirname $0`
cd $loc
echo $PWD