如何在C中获取应用程序路径?
我正在使用GTK为运行Linux的C程序创建一个接口。如何在C中获取应用程序路径?
我使用这个函数来加载我的XML接口:
gtk_builder_add_from_file(builder, g_build_filename("myInterface.glade", NULL), &error);
只要我在同一目录作为我编译的文件,它的工作原理。 但是,如果我在另一个目录中,让我们说一个孩子,然后执行它:../a.out
,我的程序找不到该文件。
所以我们的想法是首先获取程序路径(“/ home /.../program”)并添加文件名以获取绝对路径。
但我不知道如何获得程序路径。而且我不确定这是使其工作的最佳主意。
有什么想法?谢谢!
argv [0]包含您运行程序时运行的相对/完整路径。
刚刚扫描到最后的“/”,这将是从当前位置
“编辑”后,一些调查研究的运行目录,我发现这一点,这在所有的情况下工作:
#include<stdio.h>
#include <unistd.h>
#include <string.h>
#include <libgen.h>
int main()
{
char path[500] = {0};
int dest_len = 500;
if (readlink ("/proc/self/exe", path, dest_len) != -1)
{
dirname (path);
strcat (path, "/");
printf("path=%s\n", path);
}
}
'argv [0]'包含程序被调用的名称。你不能依靠其中的完整路径。 – MicroVirus 2014-09-28 10:49:03
好的,我修改了我的回答 – 2014-09-28 10:59:30
这仍然滥用参数向量,并且不可靠作为问题的解决方案。 argv [0]只是被调用的程序名称:它可能包含一个相对路径,它可能包含一个完整路径,它可能根本不包含任何路径。 – jku 2014-09-29 09:21:59
在哪个操作系统上需要它? – alk 2014-09-28 11:02:09
到目前为止,答案并没有考虑到executbale开始时没有给出路径的情况,而是通过扫描PATH环境变量被shell发现。 – alk 2014-09-28 11:06:27
相关如果操作系统是Linux:http://stackoverflow.com/q/606041/694576 – alk 2014-09-28 11:07:14