0

我有一个用C编写的程序。它的目录结构是这样的:

root/
    program.sh
    textures/
        texture1.png

program.sh以如下方式导入纹理:(load_textures("./textures/texture1.png")相对路径)。因此,该程序仅在我program.shroot目录执行时才有效。

我想创建一个链接,program.sh这样,每当我执行链接时,我都可以program.sh从根目录执行。换句话说,我想program.sh从根目录之外执行。

现在,我更喜欢在不更改源代码的情况下执行此操作的解决方案(如果有办法),否则,在当前情况下,您如何建议我在 C 中打开文件/纹理?

这里有一个类似的问题,但没有答案。

4

1 回答 1

1

从评论中可以清楚地看出,目标是从不同的目录执行程序,但程序的当前工作目录指向它自己的目录。

虽然这可以在 C 中完成(在 POSIX 系统中,由于.sh扩展而假设,通过 thechdirexecvpsyscall 的组合),但在包装器 shell 脚本中更容易实现,如下所示:

#!/bin/sh

pushd /path/to/executable
./program.sh $@
popd
于 2019-03-10T07:34:46.667 回答