我想修复一个使用相对路径来加载数据文件的旧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
答案 0 :(得分:2)
为什么不想要readlink("/proc/self/exe")
?这是在linux上找到可执行文件路径的方法。
唯一的另一种方法是使用getenv()
从环境中提取PATH并遍历PATH目录以查找argv [0]的匹配项。第一种选择更容易。
或者在首次对可执行文件执行which
并将结果作为命令行参数或某些此类黑客传递后,编写一个脚本来启动程序。