java - C,打开相对于可执行文件路径的文件?

标签 java c linux path getresource

我想修复一个使用相对路径加载数据文件的旧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/

相关文章:

c++ - 查找当前打开的文件句柄数(不是 lsof)

linux - ffmpeg 同时连接和缩放?

linux - Qt C++项目在另一台PC上

java - 如何使 Avro 模式中的所有字段都可以为空?

java - 在自动 eclipse 构建期间将 checkstyle 与 Ant 结合使用

java - 列表函数作为 Java 中的选择

c++ - 在没有 Main 的情况下编译 C 程序

c - C语言中带\0的字符串长度

java - 我想用鼠标输入在窗口上绘制像素

c - 如何在GEdit中获得GTK语法高亮?