我有一个C程序,它使用与可执行文件位于同一目录中的一些资源。当我从随机工作目录(而不是程序所在的目录)执行程序时,资源不会加载,因为我在代码中使用的相对路径不是可执行文件所在的路径。我怎么能很好地解决这个问题?
答案 0 :(得分:0)
对于今后发生在这个老问题上的任何人,就像我刚刚做的那样:
该程序(至少在linux中)将它被调用的命令保留为int main
参数列表的第一个参数。
e.g。
在这个例子中,我们将深入了解几个目录以进入我们的程序,从而产生以下调用命令user@PC:~$ ./foo/bar/awesome_program.x86_64
。
该程序(下面的代码)将打印./foo/bar/awesome_program.x86_64
由于我们将该字符串作为变量,因此从它构造相对路径应该相当简单,只用相对于可执行文件的路径替换该字符串的结尾。
工作代码:
#include <stdio.h>
int main (int argc, char **argv)
{
printf("calling path: %s\n", argv[0]);
return 0;
}