我想修复一个使用相对路径加载数据文件的旧C程序(获取源代码),期望从放置它的目录调用可执行文件,例如LoadEx("./dataFile", dataFile);
当然,从另一个目录调用程序会失败,因为 dataFile
无法加载。
如何修改 C 程序以加载相对于可执行文件目录的 dataFiles
?
编辑: 我原来的问题变得不适用,因此至少重复: -How do I find the location of the executable in C? -How to open a file with it's relative path in Linux? -Finding current executable's path without /proc/self/exe
最佳答案
为什么你不需要readlink("/proc/self/exe")
?这是在 Linux 上查找可执行文件路径的方法。
唯一的其他方法是使用 getenv()
从环境中提取 PATH,并遍历 PATH 目录寻找 argv[0] 的匹配项。第一个选项要容易得多。
或者在首先对可执行文件执行 which
并将结果作为命令行参数或类似的 hack 传递之后,编写一个脚本来启动程序。
关于java - C,打开相对于可执行文件路径的文件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9138499/